Тестирование функции Update a Post
Я не совсем понимаю, как обновлять записи в блоге на основе моего кода. Я использую представления, основанные на методах.
def create_post(request):
form_class = PostForm
template = 'addpost.html'
if request.method == "POST":
form = form_class(request.POST)
title = request.POST.get("title")
content = request.POST.get("content")
user_id = request.POST.get("author")
if request.user.has_perm("posts.add_post"):
Post.objects.create(
title=title,
content=content,
author=User.objects.get(pk=user_id)
)
else:
pass
return render(request, template)
def edit_post(request):
form_class = PostForm
template = 'editpost.html'
if request.method == "PATCH":
form = form_class(request.PATCH)
Title = request.PATCH.GET("title")
Content = request.PATCH.GET("content")
User_id = request.PATCH.GET("author")
if request.user.has_perm("posts.update_post") and (User_id == User.pk):
Post.objects.update(
title=Title,
content=Content,
author=User.objects.get(pk=User_id)
)
else:
pass
return render(request, template)
Для метода update_post в этом сценарии нужно использовать PATCH, UPDATE или POST-запрос? Имейте в виду, что я также использую этот метод для тестирования.
Вот код Pytest:
class TestPermissions:
@pytest.mark.django_db
def test_post_add_contributor_group_permission(db):
client = Client()
user = User.objects.create_user(
username="testuser",
email="test@example.com",
password="pass123"
)
post_data = {
"title": "Post Title",
"content": "Post Content",
"author": user.id
}
group = Group.objects.create(name="Contributor")
client.login(username="testuser", password="pass123")
response = client.post(reverse("add_post"), post_data)
assert response.status_code == 200
assert Post.objects.all().count() == 0
content_type = ContentType.objects.get_for_model(Post)
permission = Permission.objects.get(
content_type=content_type,
codename__icontains="add"
)
group.permissions.add(permission)
user.groups.add(group)
response = client.post(reverse("add_post"), post_data)
assert response.status_code == 200
assert Post.objects.all().count() == 0
@pytest.mark.django_db
def test_post_update_contributor_group_permission(db):
client = Client()
user = User.objects.create_user(
username="testuser",
email="test@example.com",
password="pass123"
)
post_data = {
"title": "Post Title",
"content": "Post Content",
"author": user.id
}
group = Group.objects.create(name="Contributor")
client.login(username="testuser", password="pass123")
content_type = ContentType.objects.get_for_model(Post)
permission = Permission.objects.get(
content_type=content_type,
codename__icontains="add"
)
group.permissions.add(permission)
user.groups.add(group)
response = client.post(reverse("add_post"), post_data)
updated_data = {
"title": "Updated Post Title",
"content": "Updated Post Content",
"author": user.id
}
response = client.patch('edit_post//1', updated_data)
assert response.status_code == 200
Я использовал и патч, и обновление без какого-либо успеха. Есть ли кто-нибудь, кто может подсказать мне, как сделать обновления?