django.core.urlresolvers.NoReverseMatch

Dil*_*Mac 1 python regex django url

我有一个名为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
Run Code Online (Sandbox Code Playgroud)

配置/ 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)
Run Code Online (Sandbox Code Playgroud)

base.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 %}
Run Code Online (Sandbox Code Playgroud)

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

iso*_*lev 6

您需要为'delete_question'url指定'pk'参数.这样的事情应该有效:

class DeleteQuestion(DeleteView):
    model = Question

    def get_success_url(self):
        return reverse('delete_question', kwargs={'pk': self.object.pk})
Run Code Online (Sandbox Code Playgroud)

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