我对Django非常陌生。 我正在尝试使用带有可选参数的网址, 如果我传递包含可选参数的URL,则一切都会按预期工作,但是当我尝试使用不带可选参数的URL时,将收到404页面未找到错误。
我的 urls.py 文件内容
from coffeehouse.stores import views as stores_views
urlpatterns = [
url(r'^store/(?P<store_id>\d+)/',stores_views.details)
]
stores / views.py 文件内容
def details(request, store_id='1'):
store_info={
'store_id':store_id
}
return render(request, 'stores/details.html',store_info)
我无法弄清楚为什么不考虑默认参数。
我正在使用Django 1.11,不确定是否与Django版本相关。
答案 0 :(得分:0)
希望这对以后的人有帮助。
我解决了这个问题。我几乎忘了在 urls.py 文件中加入一行。
此更改解决了我的问题。
from coffeehouse.stores import views as stores_views
urlpatterns = [
url(r'^store/$',stores_views.details)
url(r'^store/(?P<store_id>\d+)/',stores_views.details)
]
答案 1 :(得分:0)
您可以提供2个不同的URL,一个用于处理带参数的URL,另一个用于处理不带参数的URL
别忘了在网址末尾添加
sudo chown -R $USER:$USER .
符号
$
如果您使用urlpatterns = [
url(r'^store/$',stores_views.details)
url(r'^store/(?P<store_id>\d+)/$',stores_views.details)
]
访问该网站,则Django首先会尝试找到匹配的第一个模式。在我们的情况下,第一个将匹配。
如果您使用127.0.0.1:8000/store
访问该网站,则Django首先会尝试找到匹配的第一个模式。第一个永远不会匹配,因此Django将尝试第二个,当然它将匹配。