django slug问题noreversematch
我是django的新手,我不需要什么帮助来解决这个问题。我收到错误NoReverseMatchdjango slug问题noreversematch,django,Django,我是django的新手,我不需要什么帮助来解决这个问题。我收到错误NoReverseMatch django.urls.exceptions.NoReverseMatch: Reverse for 'blog_details' with keyword arguments '{'slug': 'Cybercrime-Could-Cost-the-World-$10.5-Trillion-Annually-by-2025-aee2db6e-29ca-4ff9-94e8-09d8656905f3'}
django.urls.exceptions.NoReverseMatch: Reverse for 'blog_details' with keyword arguments '{'slug': 'Cybercrime-Could-Cost-the-World-$10.5-Trillion-Annually-by-2025-aee2db6e-29ca-4ff9-94e8-09d8656905f3'}' not
found. 1 pattern(s) tried: ['blog/details/(?P<slug>[-a-zA-Z0-9_]+)$']
url.py
urlpatterns = [
path('', views.BlogList.as_view(), name = 'blog_list'),
path('write/', views.CreateBlog.as_view(), name = 'create_blog'),
path('details/<slug:slug>', views.blog_details, name = 'blog_details'),
]
这将不起作用,因为您的“slug”包含无效字符。事实上:
Cybercrime-Could-Cost-the-World-$10.5-Trillion-Annually-by-2025-aee2db6e-29ca-4ff9-94e8-09d8656905f3
包含$
,但slug不能包含$
。A$
不是有效的段塞字符。
{% extends 'base.html' %}
{% block title %} Detail{% endblock %}
{% block body_block %}
<h2>I am a blog list home page.</h2>
{% if blogs %}
{% for blog in blogs %}
<h2>{{ blog.blog_title }}</h2>
<div class="row">
<div class="col-sm-4">
<img src = "{{ blog.blog_image.url }}" alt="{{ blog.blog_title }}" width='100%;'>
</div>
<div class="col-sm-8">
<p>{{ blog.blog_content | linebreaks }}
<a href = "{% url 'blog_details' slug=blog.slug %}">Read More</a>
</p>
</div>
<p><i>{{ blog.publish_date }}</i></p>
<h5>Posted by {{ blog.author }}</h5>
</div>
{% endfor %}
{% else %}
<p>No articles available!</p>
{% endif %}
{% endblock %}
class Blog(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='post_author')
blog_title = models.CharField(max_length=264, verbose_name='Put a title')
slug = models.SlugField(max_length=264, unique = True)
blog_content = models.TextField(verbose_name='What is on your mind?')
blog_image = models.ImageField(upload_to = 'blog_images', verbose_name='Blog image')
publish_date = models.DateTimeField(auto_now_add=True)
update_date = models.DateTimeField(auto_now=True)
Cybercrime-Could-Cost-the-World-$10.5-Trillion-Annually-by-2025-aee2db6e-29ca-4ff9-94e8-09d8656905f3
class SlugConverter(StringConverter):
regex = '[-a-zA-Z0-9_]+'
>>> from django.utils.text import slugify
>>> slugify('Cybercrime Could Cost the World $10.5 Trillion Annually by 2025')
'cybercrime-could-cost-the-world-105-trillion-annually-by-2025'
>>> slugify('più')
'piu'