Как сделать редирект на страницу пользователя после успешного сохранения новой записи в блоге в Django
В моем проекте в Джанго есть форма создания новых постов в блоге:
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = ('text', 'group')
group = forms.ModelChoiceField(queryset=Post.objects.all(),
required=False, to_field_name="group")
widgets = {
'text': forms.Textarea(),
}
labels = {
"group": "Группа",
"text": "Текст"
}
Также есть вью-функция:
# Страница для создания новой записи
def post_create(request):
groups = Group.objects.all()
form = PostForm(request.POST or None, files=request.FILES or None)
context = {
'groups': groups,
'form': form,
}
if form.is_valid():
form.instance.author = request.user
form.save()
return redirect**('здесь должен быть адрес на редирект')**
return render(request, 'posts/create_post.html', context)
Ну и path из файлика urls.py с адресом страницы нового поста:
path('create/', views.post_create, name='post_create')
По заданию, после успешного создания нового поста должен быть редирект на страницу профайла залогиненного пользователя.
И вот не могу я понять, как именно прописать такой редирект? Какой параметр передать в строку return redirect, чтобы подхватилось имя пользователя?
Ответы (1 шт):
Автор решения: Герман Артуров
→ Ссылка
Зависит от того, какой ендпоинты в вашем urls.py вернет на страницу автора.
urls.py
app_name = "posts"
urlpatterns = [
path("<str:username>/", views.profile, name="profile"),
]
views.py
redirect('posts:profile', request.user.username)
Примерно так.
Eсли у вас использовано app_name в url.py
иначе redirect('profile', request.user.username)