Python django 入门学习系列(二)

来源:互联网 发布:python教程 廖雪峰 编辑:程序博客网 时间:2024/04/30 01:12

1 . 绑定 URL 与视图函数

2 .使用Django模板系统

这里主要是跟着追梦的教程自己一边看着一边用于实践来写的

步骤1:首先在 项目应用的目录下创建一个 urls.py 文件

在urls.py 中写入:

blog/urls.pyfrom django.conf.urls import urlfrom . 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.pyfrom django.http import HttpResponsedef 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 urlfrom django.contrib import adminurlpatterns = [    url(r'^admin/', admin.site.urls),]

2

- from django.conf.urls import url+ from django.conf.urls import url, includefrom django.contrib import adminurlpatterns = [    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的写法:

<!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.pyTEMPLATES = [    {        '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.pyTEMPLATES = [    {        ...        'DIRS': [os.path.join(BASE_DIR, 'templates')],        ...    },]

5 把视图再修改一下:

blog/views.pyfrom django.http import HttpResponsefrom django.shortcuts import renderdef 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 }} 也被替换成相应的值。

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