这里主要是跟着追梦的教程自己一边看着一边用于实践来写的
步骤1:首先在 项目应用的目录下创建一个 urls.py 文件
在urls.py 中写入:
blog/urls.py
from django.conf.urls import url
from . import views
#写这里的路由
urlpatterns = [
url(r'^$', views.index, name='index'),
]
步骤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就可以看大我们要看到的东西了
1 在manage.py同级目录下新建一个templates文件夹或者包都可以,这并不影响。
2 在templates文件夹下可以新建一个blog文件夹在其下新建一个index.html
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 }} 也被替换成相应的值。
最后再浏览器中输入地址,我们就可以看到我们想要的代码了。