Skip to main content
 首页 » 编程设计

python之django.core.urlresolvers.NoReverseMatch

2025年05月04日26shihaiming

我有一个名为 FAQ 的应用程序,我正在使用 django-vanilla-views,这个应用程序正在运行,但我收到了上面标题中的错误,但错误的正文描述如下: NoReverseMatch:找不到带参数“(”,)”和关键字参数“{}”的“delete_question”的反向匹配。尝试了 1 种模式:['faq/delete/(?P\d+)/$']

代码如下:

from django.db import models 
# Create your models here. 
from autoslug import AutoSlugField 
from taggit.managers import TaggableManager 
 
class QuestionType(models.Model): 
    title   = models.CharField(max_length=255, unique=True) 
    slug    = AutoSlugField(populate_from='title', unique=True, max_length=255, blank=False) 
 
    def __unicode__(self): 
        return u"%s " % (self.title) 
 
 
class Question(models.Model): 
    title       = models.CharField(max_length=255) 
    description = models.TextField() 
    slug        = AutoSlugField(populate_from='title', max_length=255, unique=True, blank=False) 
    category    = models.OneToOneField('QuestionType', blank=False, related_name='question') 
    tags        = TaggableManager() 
 
    def __unicode__(self): 
        return "%s. %s " % (self.title, self.category) 
 
 
from .models import Question from vanilla import CreateView, DeleteView, UpdateView, ListView from django.core.urlresolvers import reverse_lazy 
 
# Create your views here. 
 
class QuestionList(ListView): 
    model = Question 
    template_name = "faq/question_list.jade" 
 
 
class CreateQuestion(CreateView): 
    model = Question 
    template_name = "faq/question.jade" 
    success_url = reverse_lazy('question_list') 
 
 
class EditQuestion(UpdateView): 
    model = Question 
    template_name = 'faq/question_list.jade' 
    success_url = reverse_lazy('question_list') 
 
 
class DeleteQuestion(DeleteView): 
    model = Question 
    success_url = reverse_lazy('delete_question') 
 
 
from django.conf.urls import patterns, url 
 
from .views import QuestionList, CreateQuestion, EditQuestion, DeleteQuestion 
 
urlpatterns = patterns( 
    '', 
   # URL pattern for the 
   url(regex=r'^faq/$', view=QuestionList.as_view(), name='question_list'), 
   url(regex=r'^faq/create/$', view=CreateQuestion.as_view(), name='create_question'), 
   url(regex=r'^faq/edit/(?P<pk>\d+)/$', view=EditQuestion.as_view(), name='edit_question'), 
   url(regex=r'^faq/delete/(?P<pk>\d+)/$', view=DeleteQuestion.as_view(), name='delete_question'), 
) 
 
from vanilla import TemplateView 
 
class HomePageView(TemplateView): 
    template_name = "pages/home.jade" 
 
 
class TermsPageView(TemplateView): 
    template_name = "templates/question_list.jade" 
    pass 

配置/urls.py

from django.conf import settings 
from django.conf.urls import patterns, include, url 
from django.conf.urls.static import static 
from django.contrib import admin 
 
admin.autodiscover() 
 
urlpatterns = patterns('', 
                       url(r'', include('apps.pages.urls')), 
                       url(r'', include('apps.faq.urls')), 
                       url(r'^admin/', include(admin.site.urls)), 
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

基地. Jade

.collapse.navbar-collapse 
    ul.nav.navbar-nav.pull-left 
        {% url 'home' as home %} 
        {% if request.path == home %} 
        li.active 
            a(href="{% url 'home' %}") {% blocktrans %}Home{% endblocktrans %} 
        {% else %} 
        li 
            a(href="{% url 'home' %}") {% blocktrans %}Home{% endblocktrans %} 
        {% endif %} 
 
        {% url 'about' as about %} 
        {% if request.path == about %} 
        li.active 
            a(href="{% url 'about' %}") {% blocktrans %}About us{% endblocktrans %} 
        {% else %} 
        li 
            a(href="{% url 'about' %}") {% blocktrans %}About us{% endblocktrans %} 
        {% endif %} 
 
        {% url 'contact' as contact %} 
        {% if request.path == contact %} 
        li.active 
            a(href="{% url 'contact' %}") {% blocktrans %}contact{% endblocktrans %} 
        {% else %} 
        li 
            a(href="{% url 'contact' %}") {% blocktrans %}contact{% endblocktrans %} 
        {% endif %} 
 
        {% url 'faq' as faq %} 
        {% if request.path == faq %} 
        li.active 
            a(href="{% url 'question_list' %}") {% blocktrans %}FAQ{% endblocktrans %} 
        {% else %} 
        li 
            a(href="{% url 'question_list' %}") {% blocktrans %}FAQ{% endblocktrans %} 
        {% endif %} 
 
 
        {% if request.user.is_staff %} 
        li 
            a(href="{% url 'admin:index' %}") {% blocktrans %}Admin{% endblocktrans %} 
        {% endif %} 

错误是关于正则表达式的,它不清楚为什么工作,现在显示错误!! 需要一些帮助 谢谢

请您参考如下方法:

您需要为“delete_question”网址指定“pk”参数。这样的事情应该有效:

class DeleteQuestion(DeleteView): 
    model = Question 
 
    def get_success_url(self): 
        return reverse('delete_question', kwargs={'pk': self.object.pk}) 

但是是的,为什么要让DeleteView在删除后重定向到自己呢?