Python django 入门学习系列(二)

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就可以看大我们要看到的东西了

使用Django模板系统

1 在manage.py同级目录下新建一个templates文件夹或者包都可以,这并不影响。

2 在templates文件夹下可以新建一个blog文件夹在其下新建一个index.html

注意:再一次强调 templates\ 目录位于项目根目录,而 index.html 位于 templates\blog 目录下,而不是 blog 应用下,如果弄错了你可能会得到一个TemplateDoesNotExist 异常。如果遇到这个异常,请回来检查一下模板目录结构是否正确。

3 . index.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 }} 也被替换成相应的值。

最后再浏览器中输入地址,我们就可以看到我们想要的代码了。

你可能感兴趣的:(python-web)