在Django项目中,当我们在viwes.py
中定义一个函数时,它期望一个参数(称为request
参数)。
views.py
from django.http import HttpResponse
def my_homepage_view(request):
return HttpResponse("<h1>This is the homepage")
但在url.py
中,当我们将my_homepage_view
传递给url()
函数时,我们不会将任何参数传递给my_homepage_view()
函数。在这种情况下,我没有将任何参数传递给my_homepage_view()。但它运作良好。
url.py
from lern_django.views import my_homepage_view
urlpatterns = [
url(r'^$', my_homepage_view)
]
请你能解释一下这怎么可能?
答案 0 :(得分:0)
简单来说,当您在应用程序中请求页面时,django本身就会创建 HttpRequest对象并将其作为第一个参数绑定到负责的视图。
转到settings.py文件并找到以下内容:
ROOT_URLCONF = 'project.urls'
当您在django应用程序中请求页面时,会发生以下情况:
1)Django将查看您的settings.py文件并找到ROOT_URLCONF并确定要关注的网址
2)浏览器中的每个HTTPRequest都将URLCONF属性与其关联。
3)基于来自浏览器的HTTPRequest中的此URLCONF值,django将其映射到ROOT_URLCONF
4)Django然后在你的网址中查找urlpatterns并迭代所有网址并在第一次出现给定网址模式时存在。
5)并且,基于url映射,将加载给定视图。将使用HTTPRequest作为第一个参数调用视图。
答案 1 :(得分:0)
您在此处使用的url
方法是配置Django应用程序以将该视图函数用于该URL。当Django处理请求时,它会将HTTP请求解析为Random#nextInt
对象并将其传递给您的视图函数。