Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django NoReverseMatch at/qw-1/_Python_Django - Fatal编程技术网

Python Django NoReverseMatch at/qw-1/

Python 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&

我是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<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"> &nbsp 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"> &nbsp 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%}