Django PK至slugfield

2024-10-03 17:16:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把我的网址从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网址。我得到这个错误

Reverse for 'propose_answer' with arguments '('',)' not found. 1 pattern(s) tried: ['propose-answer/(?P[-\w]+)/$']

第二个问题是,当表单有效时,如何再次转发到slug url?这不是同一型号。我有两个模型。问答。在公布答案之后,我想回到主要问题,比如网址

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

你知道吗-- 更新

在posted url.py中,我有两行建议答案,一行是outcommand。我希望使用provide answer with slug,就像我在outcommission行中尝试的那样,但是当我尝试这个时,我得到了显示的错误


Tags: answernameselfformviewidurlas
1条回答
网友
1楼 · 发布于 2024-10-03 17:16:56

你可以用这个

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

那么为了你的成功

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

相关问题 更多 >