Django创建项目及初步构建
在Pycharm创建Django项目后进入该文件路径,打开终端
输入
pythonpython3 manage.py runserver 0.0.0.0:8000
然后在浏览器输入
http://127.0.0.1:8000/
注意:项目中如果代码有改动,服务器会自动监测代码的改动并自动重新载入,所以如果你已经启动了服务器则不需手动重启。
新建一个views.py,输入以下代码
from django.http import HttpResponse
def hello(request):
return HttpResponse("hello world!你好,master")
接着,绑定 URL 与视图函数。打开 urls.py 文件,删除原来代码,将以下代码复制粘贴到 urls.py 文件中:
from django.urls import path
from . import views
urlpatterns = [
path('hello/', views.hello),
]
/* 两种方式均可,建议用path*/
from django.urls import re_path as url
from . import views
urlpatterns = [
url('hello/', views.hello),
]
此时访问时的地址为
http://127.0.0.1:8000/hello
可以看到
path()可以接收四个参数,分别是两个必选参数:route、view 和两个可选参数:kwargs、name。
语法格式
path(route, view, kwargs=None, name=None)
- route: 字符串,表示 URL 规则,与之匹配的 URL 会执行对应的第二个参数 view。
- view: 用于执行与正则表达式匹配的 URL 请求。
- kwargs: 视图使用的字典类型的参数。
- name: 用来反向获取 URL。
新建一个template/runoob.html文件,加入如下代码
<h1>{{ hello }}</h1>
需要向Django说明模板文件的路径,修改settings.py,修改 TEMPLATES 中的 DIRS 为 [os.path.join(BASE_DIR, ‘templates’)],如下所示:
'DIRS': [os.path.join(BASE_DIR, 'templates')],
在views.py写入
def demo(request):
context = {}
context['hello'] = 'Hello World!'
return render(request, 'demo.html', context)
这里使用 render 来替代之前使用的 HttpResponse。render 还使用了一个字典 context 作为参数。
context 字典中元素的键值 hello 对应了模板中的变量 {{ hello }}
在urls.py写入
from django.urls import path
from . import views
urlpatterns = [
path('demo/', views.demo),
]
启动后出现以下界面
模板语法
views.py:{"HTML变量名":"views变量名"}
HTML:{{变量名}}
在views.py中
from django.shortcuts import render
def demo(request):
views_name = "demo"
return render(request,"runoob.html", {"name":views_name})
在demo.html中
<p>{{ name }}</p>>
再次访问网址
列表
在views.py中
from django.shortcuts import render
def runoob(request):
views_list = ["demo1","demo2","demo3"]
return render(request, "demo.html", {"views_list": views_list})
在runoob.html中
<p>{{ views_list }}</p> # 取出整个列表
<p>{{ views_list.0 }}</p> # 取出列表的第一个元素
结果如图
字典
在views.py中
from django.shortcuts import render
def demo(request):
views_dict = {"name":"demo"}
return render(request, "demo.html", {"views_dict": views_dict})
在demo.html中
<p>{{ views_dict }}</p>
<p>{{ views_dict.name }}</p>
结果如图