【问题标题】:Django PK to slugfieldDjango PK 到 slugfield
【发布时间】:2020-01-01 02:51:21
【问题描述】:

我想将我的网址从 PK 更改为 slugfields,但在一个字段上这不起作用。

urlpatterns = [
    ...
    url(r'^indexed/$', views.QuestionsIndexListView.as_view(), name='index_all'),
    url(r'^ask-question/$', views.CreateQuestionView.as_view(), name='ask_question'),
    url(r'^(?P<slug>[-\w]+)/$', views.QuestionDetailView.as_view(), name='detail'),
    url(r'^propose-answer/(?P<question_id>\d+)/$', views.CreateAnswerView.as_view(), name='propose_answer'), 
    #url(r'^propose-answer/(?P<slug>[-\w]+)/$', views.CreateAnswerView.as_view(), name='propose_answer'),
]

观看次数

class CreateAnswerView(LoginRequiredMixin, CreateView):
    model = Answer
    fields = ["content", ]
    message = _("Thank you!")

    def form_valid(self, form):
        form.instance.user = self.request.user
        form.instance.question_id = self.kwargs["question_id"]
        return super().form_valid(form)

    def get_success_url(self):
        messages.success(self.request, self.message)
        return reverse(
            "question_detail", kwargs={"pk": self.kwargs["question_id"]})

我的第一个问题是,在途中无法使用 slug url 打开。我收到此错误。

未找到带有参数“('',)' 的 'propose_answer' 的反向操作。 1 尝试的模式:['propose-answer/(?P[-\w]+)/$']

我的第二个问题,当表单有效时,我怎样才能再次转发到 slug url?这不是同一个模型。我有两个模型。问题和答案。发布答案后,我想像 url 一样回到主要问题

url(r'^(?P<slug>[-\w]+)/$', views.QuestionDetailView.as_view(), name='detail'),

-- 更新

在发布的 urls.py 中,我有两行用于建议答案,一行是不推荐的。我希望在 outcommend 行中尝试将建议答案与 slug 一起使用,但是当我尝试这样做时,我得到了显示的错误。

【问题讨论】:

  • 您发布的代码似乎与您收到的错误消息不对应。该错误表明您正在尝试反转名称为 propose_answer 的 URL 和一个空字符串的单个参数。你能在你的帖子中澄清一下吗?

标签: python django slug


【解决方案1】:

你可以用这个

re_path(r'^(?P<slug>[\w\-]+)/$',  views.QuestionDetailView.as_view(), name='detail'),

那么你可以使用成功

def get_success_url(self):
    return self.request.path

【讨论】:

    猜你喜欢
    • 2012-08-02
    • 2021-01-10
    • 2015-01-28
    • 2015-08-05
    • 2011-02-19
    • 2013-07-03
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多