Python django 入门学习系列(二) àì夳堔傛蜴生んèń 2021-06-24 15:57 434阅读 0赞 ## 1 . 绑定 URL 与视图函数 ## ## 2 .使用Django模板系统 ## 这里主要是跟着追梦的教程自己一边看着一边用于实践来写的 步骤1:首先在 项目应用的目录下创建一个 urls.py 文件 > 在urls.py 中写入: blog/urls.py from django.conf.urls import url from . import views #写这里的路由 urlpatterns = [ url(r'^$', views.index, name='index'), ] ### 注意:在项目根目录的 blogproject\\ 目录下(即 settings.py 所在的目录),原本就有一个 urls.py 文件,这是整个工程项目的 URL 配置文件。而我们这里新建了一个 urls.py 文件,且位于 blog 应用下。这个文件将用于 blog 应用相关的 URL 配置。不要把两个文件搞混了 ### 步骤2:编写视图函数 > 在view.py中写入: blog/views.py from django.http import HttpResponse def index(request): return HttpResponse("欢迎访问我的博客首页!") 3 配置项目url Django 匹配 URL 模式是在 blogproject\\ 目录(即 settings.py 文件所在的目录)的 urls.py 下的,所以我们要把 blog 应用下的 urls.py 文件包含到 blogproject\\urls.py 里去,打开这个文件看到如下内容: 将1内容改为2: > 1 blogproject/urls.py """ 一大段注释 """ from django.conf.urls import url from django.contrib import admin urlpatterns = [ url(r'^admin/', admin.site.urls), ] > 2 - from django.conf.urls import url + from django.conf.urls import url, include from django.contrib import admin urlpatterns = [ url(r'^admin/', admin.site.urls), + url(r'', include('blog.urls')), ] #### 这里 - 表示删掉这一行,+ 表示添加这一行。 #### 我们这里导入了一个 include 函数,然后利用这个函数把 blog 应用下的 urls.py 文件包含了进来。此外 include 前还有一个 r”,这是一个空字符串。这里也可以写其它字符串,Django 会把这个字符串和后面 include 的 urls.py 文件中的 URL 拼接。比如说如果我们这里把 r” 改成 r’blog/’,而我们在 blog.urls 中写的 URL 是 r’^$’,即一个空字符串。那么 Django 最终匹配的就是 blog/ 加上一个空字符串,即 blog/。 -------------------- 下面在浏览器中输入[http://localhost:8000][http_localhost_8000]就可以看大我们要看到的东西了 ## 使用Django模板系统 ## 1 在manage.py同级目录下新建一个templates文件夹或者包都可以,这并不影响。 2 在templates文件夹下可以新建一个blog文件夹在其下新建一个index.html ### 注意:再一次强调 templates\\ 目录位于项目根目录,而 index.html 位于 templates\\blog 目录下,而不是 blog 应用下,如果弄错了你可能会得到一个TemplateDoesNotExist 异常。如果遇到这个异常,请回来检查一下模板目录结构是否正确。 ### 3 . index.html的写法: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>{ { title }}</title> </head> <body> <h1>{ { welcome }}</h1> </body> </html> 其中这里的title,welcome,是django规定的语法,主要是从views.py里面传参过来。 4 设置settings.py里面的模板路径 在 settings.py 文件里设置一下模板文件所在的路径。在 settings.py 找到 TEMPLATES 选项 blogproject/settings.py TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ] 其中 DIRS 就是设置模板的路径,在 [] 中写入 os.path.join(BASE_DIR, 'templates'),即: 设置为: blogproject/settings.py TEMPLATES = [ { ... 'DIRS': [os.path.join(BASE_DIR, 'templates')], ... }, ] 5 把视图再修改一下: blog/views.py from django.http import HttpResponse from django.shortcuts import render def index(request): return render(request, 'blog/index.html', context={ 'title': '我的博客首页', 'welcome': '欢迎访问我的博客首页' }) > 这里我们不再是直接把字符串传给 HttpResponse 了,而是调用 Django 提供的 render 函数。这个函数根据我们传入的参数来构造 HttpResponse。 > 我们首先把 HTTP 请求传了进去,然后 render 根据第二个参数的值 blog/index.html 找到这个模板文件并读取模板中的内容。之后 render 根据我们传入的 context 参数的值把模板中的变量替换为我们传递的变量的值,\{ \{ title \}\} 被替换成了 context 字典中 title 对应的值,同理 \{ \{ welcome \}\} 也被替换成相应的值。 最后再浏览器中输入地址,我们就可以看到我们想要的代码了。 [http_localhost_8000]: http://localhost:8000
还没有评论,来说两句吧...