我正在尝试访问一个类似于
的网址127.0.0.1:8000/posti/qNwEXBxXQdGI4KlQfoHWOA
但是我无法解决这个问题。
这是错误:
在/ posti /处NoReverseMatch反转带参数的'detail' 找不到'(SmallUUID('qNwEXBxXQdGI4KlQfoHWOA'),)'。 1个图案 尝试过的:['posti /(?P [0-9a-fA-F-] +)/ $']
Django在尝试使用另一个具有以下字符串的视图中解决该问题时遇到问题:
from . import views
from django.conf.urls import url
app_name = 'posti'
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^(?P<slug>[0-9a-fA-F-]+)/$', views.DetailView.as_view(), name='detail'),
我的DetailView是这个:
class DetailView(generic.DetailView):
model = Post
template_name = 'posti/detail.html'
slug_field = 'uuid'
def get_queryset(self):
"""
Excludes any questions that aren't published yet.
"""
return Post.objects.all()
我尝试重写get_object,但是它什么也没做。我不知道正则表达式是否有误或我的观点有误。
编辑:
我的索引模板引发了以上错误,并且具有以下代码:
{% if posti_list != null %}
<ul>
{% for post in posti_list %}
<li><a href="{% url 'posti:detail' post.uuid %}">{{ post.title }}</a></li>
{% endfor %}
</ul>
{% else %}
<p>No posts are available.</p>
{% endif %}
我将slug_url_kwarg = 'uuid'
添加到了DetailView类中,但是现在有了
/ posti / qNwEXBxXQdGI4KlQfoHWOA /一般详细信息视图上的AttributeError 必须使用对象pk或子弹调用DetailView。
当我尝试访问特定帖子时。
答案 0 :(得分:3)
我在DetailView类中添加了
slug_url_kwarg = 'uuid'
,但现在有了一个/ posti / qNwEXBxXQdGI4KlQfoHWOA /上的AttributeError通用详细信息视图DetailView必须使用对象pk或子弹调用。
slug_url_kwarg
必须与您的网址正则表达式组名称(在您的情况下为slug
,这是slug_url_kwarg
的默认值)相匹配,因此您不应该更改它
有关详细信息,请参见此处的Django源代码-https://github.com/django/django/blob/master/django/views/generic/detail.py#L8