В моем urls.py у меня есть ListView и CreateView. Когда у меня есть оба представления в шаблонах URL-адресов, CreateView показывает html, связанный с ListView. Но когда я удаляю ListView из шаблонов URL, CreateView показывает правильный html.
Если у меня так, CreateView показывает ListView html
urlpatterns = [
path("", views.TopicListView.as_view(), name="topic"),
path("<topic>/", views.PostListView.as_view(), name="post"),
path("create/", views.CreatePostView.as_view(), name="create_post")
]
Таким образом, CreateView ведет себя так, как я этого хочу. Показывает правильный HTML
urlpatterns = [
path("", views.TopicListView.as_view(), name="topic"),
path("create/", views.CreatePostView.as_view(), name="create_post")
]
class PostListView(ListView):
model = models.ForumPost
template_name = "forum/post_list.html"
def get_context_data(self):
context = super().get_context_data()
return context
def get_queryset(self):
query_set = super().get_queryset()
return query_set
class CreatePostView(CreateView):
model = models.ForumPost
fields = ("title", "description")
template_name = "forum/create_post.html"
@шафик <button type="button" name="button"><a href="{% url 'forum:create_post' %}">Create Post</a></button>
измените это на` path("list/", views.PostListView.as_view(), name="post"),`
но мне нужно проанализировать эту «тему» для моей реализации. Мои проблемы связаны с CreatePostView, он показывает неправильный html, когда PostListView находится в шаблонах URL.
Попробуйте изменить порядок URL
Причина в том, что URL-адреса проверяются один за другим сверху вниз. Итак, когда у вас есть 3 URL-адреса:
urlpatterns = [
path("", views.TopicListView.as_view(), name="topic"),
path("<topic>/", views.PostListView.as_view(), name="post"),
path("create/", views.CreatePostView.as_view(), name="create_post")
]
И попробуйте использовать create/
, он действительно соответствует шаблону <topic>/
, поскольку строка была передана. Так что я рекомендую поместить его очень вниз:
urlpatterns = [
path("", views.TopicListView.as_view(), name="topic"),
path("create/", views.CreatePostView.as_view(), name="create_post")
path("<topic>/", views.PostListView.as_view(), name="post"),
]
Но также было бы лучше, если бы вы добавили какой-то дополнительный путь к URL-адресам, чтобы он не был двуличным, как list/<topic>/
.
как вы используете URL в html?