Python Django NoReverseMatch at/qw-1/
我是django的新手,使用slug时受到了冲击,现在我不知道如何使用ID参数并转换为slug URL.pyPython Django NoReverseMatch at/qw-1/,python,django,Python,Django,我是django的新手,使用slug时受到了冲击,现在我不知道如何使用ID参数并转换为slug URL.py url(r'^deletePost/(?P<slug>[\w-]+)/$', views.delete_post, name='delete_post') 如何使用slug&id删除已创建的帖子 感谢您的帮助。提前谢谢 参考错误 如果要同时使用slug和id,URL模式应如下所示: url(r'^deletePost/(?P<slug>[\w-]+)-(?P&
url(r'^deletePost/(?P<slug>[\w-]+)/$', views.delete_post, name='delete_post')
如何使用slug&id删除已创建的帖子
感谢您的帮助。提前谢谢
参考错误
如果要同时使用slug和id,URL模式应如下所示:
url(r'^deletePost/(?P<slug>[\w-]+)-(?P<id>[0-9]+)/$',
views.delete_post, name='delete_post')
def delete_post(request, **kwargs):
# Here kwargs value is {'slug': 'qw', 'id': '1'}
posts = Post.objects.get(**kwargs)
if request.method == 'POST':
posts.delete()
return redirect('home')
# ... (I guess this view does not end here)
您的模板还必须同时设置:
<form method="POST" action="{% url 'delete_post' slug=post.id id=post.id %}">{% csrf_token %}
<button type="submit" class="btn btn-danger">   Delete</button>
</form>
{%csrf\u令牌%}
&删除
如果要同时使用slug和id,URL模式应如下所示:
url(r'^deletePost/(?P<slug>[\w-]+)-(?P<id>[0-9]+)/$',
views.delete_post, name='delete_post')
def delete_post(request, **kwargs):
# Here kwargs value is {'slug': 'qw', 'id': '1'}
posts = Post.objects.get(**kwargs)
if request.method == 'POST':
posts.delete()
return redirect('home')
# ... (I guess this view does not end here)
您的模板还必须同时设置:
<form method="POST" action="{% url 'delete_post' slug=post.id id=post.id %}">{% csrf_token %}
<button type="submit" class="btn btn-danger">   Delete</button>
</form>
{%csrf\u令牌%}
&删除
在我看来,您不想将id转换为slug。您只需使应用程序足够灵活,就可以通过slug
或id
进行删除。您只需要相应地处理参数
所以,你可以这样做:
url(r'^deletePost/(?P<slug>[\w-]+)-(?P<id>[0-9]+)/$',
views.delete_post, name='delete_post')
def delete_post(request, **kwargs):
# Here kwargs value is {'slug': 'qw', 'id': '1'}
posts = Post.objects.get(**kwargs)
if request.method == 'POST':
posts.delete()
return redirect('home')
# ... (I guess this view does not end here)
url.py
url(r'^deletePost/(?P<slug>[\w-]+)/$', views.delete_post, name='delete_post_by_slug'),
url(r'^deletePost/(?P<id>[0-9]+)/$', views.delete_post, name='delete_post_by_id')
请注意,您可以将这两个URL模式压缩为一个模式,但这种方法可以保持可读性和可理解性。一旦您熟悉django框架,我将让您了解URL整合,等等 在我看来,您不想将id转换为slug。您只需使应用程序足够灵活,就可以通过
slug
或id
进行删除。您只需要相应地处理参数
所以,你可以这样做:
url(r'^deletePost/(?P<slug>[\w-]+)-(?P<id>[0-9]+)/$',
views.delete_post, name='delete_post')
def delete_post(request, **kwargs):
# Here kwargs value is {'slug': 'qw', 'id': '1'}
posts = Post.objects.get(**kwargs)
if request.method == 'POST':
posts.delete()
return redirect('home')
# ... (I guess this view does not end here)
url.py
url(r'^deletePost/(?P<slug>[\w-]+)/$', views.delete_post, name='delete_post_by_slug'),
url(r'^deletePost/(?P<id>[0-9]+)/$', views.delete_post, name='delete_post_by_id')
请注意,您可以将这两个URL模式压缩为一个模式,但这种方法可以保持可读性和可理解性。一旦您熟悉django框架,我将让您了解URL整合,等等 尝试将[\w-]更改为[-\w]不清楚是否同时需要
slug
和id
。或者,如果您接受slug
或id
,请尝试将[\w-]更改为[-\w],不清楚您是否同时需要slug
和id
。或者,如果您接受slug
或id
?可能值得一提的是,您需要更新模板标记中的url名称:{%url'delete_post_by_id'id=post.id%}
。可能值得一提的是,您需要更新模板标记中的url名称:{%url'delete_post_by_id'id=post.id%}
。