Джанго форма действия "."перезагружает ту же страницу с отсутствующим слагом - PullRequest
3 голосов
/ 03 мая 2019

Я следую базовому руководству, которое добавляет комментарии на страницу с подробностями поста в блоге.Я перехожу на страницу сведений с методом absolute_url, и она работает отлично.

def get_absolute_url(self):
return reverse('blog:post_detail',
               args=[self.publish.year,
                     self.publish.month,
                     self.publish.day,
                     self.slug])

Вот пример URL, созданный get_absolute_url

http://localhost:8000/blog/2019/5/2/second-post

Однако, когда я отправляю форму на странице сведений с действием = ".", Он возвращает толькопараметры даты и пропуская часть слизняка.

<form action="." method="post">
  {% csrf_token %}
  {{ comment_form.as_p }}
  <p><input type="submit" value="Add comment"></p>
</form>

Вот возвращенный URL

http://localhost:8000/blog/2019/5/2/

добавление action="{{ post.get_absolute_url }}", похоже, решает проблему, но книга, за которой я следую Django 2 By Example, говорит, что должнапросто отлично работает с действием = "."

Я новичок в Django and Development, поэтому спасибо за вашу помощь и понимание, если вопрос в любом случае нуб :)

1 Ответ

3 голосов
/ 03 мая 2019

Вы не показывали свои шаблоны URL, но все они должны заканчиваться /. Таким образом, исходный URL-адрес http://localhost:8000/blog/2019/5/2/second-post должен быть http://localhost:8000/blog/2019/5/2/second-post/. Например, шаблон может быть:

path('blog/<int:year>/<int:month>/<int:day>/<slug:slug>/', views.blog, 'blog'),

, который заканчивается косой чертой, поэтому сгенерированный путь также заканчивается косой чертой. Затем отправка в "." будет работать правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...