我有一个名为 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在删除后重定向到自己呢?
