#django #django-models #django-forms #django-views
#django #django-модели #django-forms #django-просмотры
Вопрос:
Я пытаюсь отредактировать вопрос с помощью тега, который ссылается на мою функцию edit_post в моем views.py . Я думаю, проблема в том, что я не передал контекст в правильное представление для его отображения, но я не уверен, как это исправить. Получение этой ошибки — обратный для ‘edit’ с аргументами ‘(«,)’ не найден. 1 шаблон (ы) попробован: [‘users/(?P[^/] )/edit/(?P[0-9] )$’]
Views.py
@login_required(login_url='sign_in')
def dashboard(request, *args, **kwargs):
username = request.user.username
filtered_questions = Question.objects.filter(user_id=username)
context = {
'filtered_questions': filtered_questions,
}
return render(request, 'users/dashboard.html', context)
def edit_post(request, pk):
question = Question.objects.get(pk=pk)
if rerquest.method == 'POST':
form = QuestionForm(request.POST, instance=question)
if form.is_valid():
form.save()
question.user = request.user
return redirect('/')
else:
form = QuestionForm(instance=question)
else:
form = QuestionForm(instance=question)
context = {
'form': form,
'question': question,
}
return render(request, 'users/edit_question.html', context)
Urls.py
urlpatterns = [
path('<username>', views.dashboard, name='dashboard'),
path('<username>/upload', views.upload, name='upload'),
path('<username>/edit/<int:pk>', views.edit_post, name='edit')
]
Шаблон с кнопкой редактирования вопроса
<a href="{% url 'edit' question.pk %}">
Редактировать:
context = {
'filtered_questions': filtered_questions,
'username':username,
}
Попытался передать имя пользователя в качестве контекстной переменной и отобразить его в шаблоне следующим образом
<a href="{% url 'edit' username question.pk %}">
Ответ №1:
Вы также должны указать имя пользователя для url
соответствия:
<a href="{% url 'edit' username=user.username pk=question.pk %}">
Вам не нужно передавать username
из контекста, если вы передаете request.user.username
. Потому что user
всегда доступен с аутентифицированной страницы из шаблона.
Комментарии:
1. Даже после добавления имени пользователя сообщение об ошибке сохраняется. Нужно ли мне передавать эту переменную имени пользователя через контекст?
2. Да … передайте имя пользователя из контекста и поместите его перед
question.pk
3. Хорошо, спасибо, что помогло! Тем не менее, я все еще не понимаю, как я должен получить правильный question.pk . Если я не могу получить к этому доступ до просмотра edit_post, как я должен передать это в свой шаблон в «dashboard»?
4. Извините, я не смог понять, о чем вы спрашиваете. Пожалуйста, объясните немного.
5. Я пытаюсь получить доступ к «question.pk » в моем шаблоне панели мониторинга, но я не передаю переменную контекста вопроса, пока не будет нажат элемент, который запускает edit_post.