在 django 中,用于将数据发送到(通过 POST/GET)或导航到(通过浏览器)的 URL 端点(路由)在名为 urls.py 的文件中指定。有一个主要的urls.py 文件位于包含settings.py 和wsgi.py 的文件夹中,它包含将请求的URL 映射到其他urls.py 文件的代码。其他urls.py 文件将请求的URL 映射到views.py 中定义的函数,这些函数呈现页面或处理数据提交(在其他框架中它们可能被称为“控制器”)。
根据您当前的 URL,查看从主 urls.py 开始的每个 urls.py 文件,直到找到该 URL 映射到的 views.py 文件。
例如,如果我当前的网址是/profile
# MyApp/urls.py (note the include('profile.urls') argument)
urlpatterns = patterns('',
url(r'^profile/', include('profile.urls'), name='profile'),
...
)
# profile/urls.py
from profile import views
urlpatterns = patterns('',
url(r'^$', views.index, name='index'), # /profile (this url is matched)
url(r'^ajax/$', views.ajax, name='ajax'), # /profile/ajax
url(r'^user/$', views.user, name='user') # /profile/user
)
# profile/views.py
def index(request):
context = RequestContext(request)
context_dict = {
'user':request.user,
'numCheckIns':Event.objects.filter(CheckedInParticipants__id=request.user.id).count,
'numCommits':Event.objects.filter(participants__id=request.user.id).count,
'gameLog': Event.objects.filter(checkedInParticipants__id=request.user.id)
}
return render_to_response('profile/index.html', context_dict, context)
def ajax(request):
if request.method == 'POST':
...
def user(request):
...
与/profile 处的渲染视图相关的文件可以追溯到profile/views.py,执行的函数称为index,包含在其中。