Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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 如果在数据库中找不到queryset,如何退出视图函数_Python_Regex_Django - Fatal编程技术网

Python 如果在数据库中找不到queryset,如何退出视图函数

Python 如果在数据库中找不到queryset,如何退出视图函数,python,regex,django,Python,Regex,Django,我的django项目“card”和“blog”中有两个应用程序 my project URL.py是: urlpatterns = [ path('admin/', admin.site.urls), path(r'', include(card.urls)), path('', include('blog.urls')),] “卡片”应用程序的url.py为: 现在“博客”应用程序的URL.py是: 当我请求“carddata”模型的“page\u end\u url”列中的url时,代码工

我的django项目“card”和“blog”中有两个应用程序

my project URL.py是:

urlpatterns = [
path('admin/', admin.site.urls),
path(r'', include(card.urls)),
path('', include('blog.urls')),]
“卡片”应用程序的url.py为:

现在“博客”应用程序的URL.py是:

当我请求“carddata”模型的“page\u end\u url”列中的url时,代码工作正常。但当我请求“articledata”模型的“art_end_url”列中的url时,它会返回Http404“您正在查找的卡不存在”

例如: 如果我请求example.com/new-year-card-2018 代码运行良好,因为“page\u end\u url”列中存在“2018年新年贺卡”

但如果我要求example.com/best-designs-of-2018 url“/best-design-of-2018”保存为“articledata”模型的“art\u end\u url”属性。代码返回Http404“您正在查找的卡不存在”

所以,请告诉我,如果请求的url,即“card\u url\u var”与“page\u end\u url”不匹配,是否有办法退出“card”views.py文件中的carddet函数。 我是django的新手。
任何建议都会有帮助。提前感谢

您可以用这种方式尝试

from django.core.urlresolvers import reverse

try:
    ...
except:
    return redirect(reverse('name-of-url'))

更多详细信息

您可以用这种方式尝试

from django.core.urlresolvers import reverse

try:
    ...
except:
    return redirect(reverse('name-of-url'))

更多详细信息

您请求从URL模式调用第一个URL匹配项

实际上,这两个URL几乎相同:

re_path(r'^(?P<card_url_var>[-\w.]+)/$', views.carddet, name='carddetail'),]

re_path(r'^(?P<art_url_var>[-\w.]+)/$', views.articledet, name='articledetail'),]

您的请求一直从URL模式调用第一个URL匹配项

实际上,这两个URL几乎相同:

re_path(r'^(?P<card_url_var>[-\w.]+)/$', views.carddet, name='carddetail'),]

re_path(r'^(?P<art_url_var>[-\w.]+)/$', views.articledet, name='articledetail'),]

附言:我已经更新了代码。卡片和文章页面用于索引所有卡片和文章。这里的问题是这个i card_url_var用于捕获请求的url字符串,这样我就可以在数据库中检查它,并将请求的查询保存在变量url_carddetails中,以将数据库中的值填入请求的模板中。而且我不希望卡片和文章详细信息页面url成为/card和/article的子文件夹。
/card和/article
只是字符串,以避免混淆,它根本不是子文件夹。除了浏览器中显示的URL之外,添加这些URL不会改变任何内容。命名您的参数,并使用该名称在视图中检索它们ps:我已经更新了代码。卡片和文章页面用于索引所有卡片和文章。这里的问题是这个i card_url_var用于捕获请求的url字符串,这样我就可以在数据库中检查它,并将请求的查询保存在变量url_carddetails中,以将数据库中的值填入请求的模板中。而且我不希望卡片和文章详细信息页面url成为/card和/article的子文件夹。
/card和/article
只是字符串,以避免混淆,它根本不是子文件夹。除了浏览器中显示的URL之外,添加这些URL不会改变任何内容。命名参数,并使用该名称在视图中检索它们
from django.core.urlresolvers import reverse

try:
    ...
except:
    return redirect(reverse('name-of-url'))
re_path(r'^(?P<card_url_var>[-\w.]+)/$', views.carddet, name='carddetail'),]

re_path(r'^(?P<art_url_var>[-\w.]+)/$', views.articledet, name='articledetail'),]

re_path(r'^card/(?P<card_url_var>[-\w.]+)/$', views.carddet, name='carddetail'),]

re_path(r'^article/(?P<art_url_var>[-\w.]+)/$', views.articledet, name='articledetail'),]