IT是我的文件树
____mysite
|____db.sqlite3
|____dealwith_Time
| |______init__.py
| |______init__.pyc
| |____admin.py
| |____admin.pyc
| |____migrations
| | |______init__.py
| | |______init__.pyc
| |____models.py
| |____models.pyc
| |____tests.py
| |____urls.py
| |____urls.pyc
| |____views.py
| |____views.pyc
|____manage.py
|____mysite
| |______init__.py
| |______init__.pyc
| |____settings.py
| |____settings.pyc
| |____urls.py
| |____urls.pyc
| |____wsgi.py
| |____wsgi.pyc
关于root urls.py文件,它是关于
url(r'^dealwith_Time/$',include('dealwith_Time.urls')),
url(r'^dealwith_Time/12$',include('dealwith_Time.urls')),
并且处理_Time的网址是
url(r'^$', 'dealwith_Time.views.current_datetime'),
url(r'^/12$', 'dealwith_Time.views.hour_ahead'),
并显示我的交易with_Time的观点
def current_datetime(request):
now = datetime.datetime.now()
html = "<html><body> It is now %s.</body></html>" %now
return HttpResponse(html)
def hour_ahead(request):
return HttpResponse("victory")
问题是当我访问它工作的localhost:8000/dealwith_time
并响应时间时。但是当我访问localhost:8000/dealwith_time/12
时,仍然会响应时间!并使用视图的current_time函数而不是使用{ {1}}功能和打印hour_ahead
.....为什么我这么困惑请帮助我..
答案 0 :(得分:1)
你必须改变
url(r'^dealwith_Time/$',include('dealwith_Time.urls')),
代表
url(r'^dealwith_Time/',include('dealwith_Time.urls')),
$符号会覆盖dealwith_Time/12
,并会覆盖在foward斜杠符号后面出现的任何内容。
答案 1 :(得分:1)
$
root
的网址末尾有urls.py
个符号。这意味着url必须完全匹配(不仅仅是开始)。因此,在您的示例中,网址与root
的{{1}}中的第二个条目相匹配,空字符串会传递给urls.py
with_Time
,因此它会匹配第一次进入和显示时间。
如果您要包含其他网址文件,通常需要使用不带urls.py
的正则表达式,那么它将匹配网址的开头,剩余的将传递给包含的网址文件。
要更正您的示例,请将其用于$
&#39; root
:
urls.py
请注意,我已删除url(r'^dealwith_Time/',include('dealwith_Time.urls')),
,因此$
和/dealwith_time/12
将匹配,并且/dealwith_time/
在第一种情况下将传递到下一级别。
并将其用于12
with_Time
:
urls.py
请注意,我已删除第二行中的url(r'^$', 'dealwith_Time.views.current_datetime'),
url(r'^12$', 'dealwith_Time.views.hour_ahead'),
,因为它会在根/
中删除。