django配置
1.安装djiango
- 先安装python解释器,注意勾选加入环境变量的配置
- 打开命令行, pip install django
- 找到django的安装目录:C:\Users\Administrator\AppData\Roaming\Python\Python38\Scripts;配置为环境变量
2.创建djiango目录
- 打开命令行,进入要创建的目录路径(如d:\django)
- 输入命令
C:\Users\Administrator\AppData\Roaming\Python\Python38\Scripts\djiango-admin startproject Dweb1
以上命令,如果在电脑的环境变量配置了djiango路径,则可以直接输入djiango-admin
,则在 d:\django\Dweb1创建目录 - pycharm打开project,则可以打开Dweb1目录。
3.创建app
- (1)djiango划分各个功能模块,可通过startapp创建app文件夹设计。打开pycharm的终端,输入
python manage.py startapp app01
,则创建app成功,pycharm下面多了app01目录,并自动生成相关文件,其中views.py主要编写视图函数接收、返回html页面数据。models.py控制数据库接口
- (2)注册app。app创建后,还需要在web目录下的settings.py配置注册下,方能识别。打开settings.py,加入:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01.apps.App01Config' #app注册配置代码,app01是app名字,App01Config为apps.py文件中的类名
]
4.启动djiango
pycharm的运行环境配置。注意manage.py的路径
5.html的交互
-(1) 用户从浏览器客户端到views.py视图函数访问:通过项目下的urls.py,输入path,则可以访问views中的函数。
from app01 import views #导入views文件
urlpatterns = [
#path('admin/', admin.site.urls),
path('news/ls', views.news) #news/ls,表示访问路径,浏览器端需要输入http://127.0.0.1:8000/news/ls
]
-(2)views.py视图文件中定义函数,本例函数为news()
from django.shortcuts import render,HttpResponse
def news(req):
return render(req,'news.html') #该函数返回news.html文件
关于render函数
render(request, template_name, context=None, content_type=None, status=None, using=None)
request:浏览器向服务器发送的请求对象,包含用户信息、请求内容和请求方式等。
template_name:设重模板文件名,用于生成网页内容。
context:对模板上下文(模板变量)赋值,以字典格式表示,默认情况下是一个空字典。
content_type:响应内容的数据格式,一般情况下使用默认值即可。
status:HTTP状态码,默认为200。
using:设置模板引擎,用于解析模板文件,生成网页内容。
-(3)djiango是在app01中的templates中管理html文件,故需要app01新建templates目录,再新建news.html.
则html页面中python代码的内容返回views.py,经过djiango内部渲染,替换成相应字符串,再通过render返回用户浏览器,完成一次http交互。
运行项目,打开浏览器访问,则可以看到相应成果。
6.模板语法
Django 中的视图的概念是「一类具有相同功能和模板的网页
的集合」,网页中需要显示python的变量、字典、数据库的数据,则需要通过Django的模板语法表示。主要是变量和标签。
假设在视图文件views.py的render函数这样构造:
from django.shortcuts import render, HttpResponse
import requests
def news(req):
a=5
datalist = ['hello', 'll', 'java']
dic={"lin":500,"zh":300,"kk":250}
return render(req, 'news.html', {"a":a,"newsList": datalist,"dic":dic})#上下文传入网页3个参数分别为a,newsList,dic
6.1变量
从上下文中输出一个值,上下文是一个类似于字典的对象,将键映射到值。变量被 {{ 和 }} 包围
网页模板语法为<p> {{ a }} </p>
6.2字典、列表
网页端语法为:
<p> {{ newsList }} </p>
<!--列表每个元素表示不用总括号,用点号-->
<p> {{ newsList.0 }} {{ newsList.1 }} </p>
6.3 标签语句
标签被 {% 和 %} 包围
网页端语法包括:for,if
<div>
{% for item in newsList %}
<span>{{ item }}</span>
{% endfor %}
</div>
<hr/>
<!--列表,字典渲染。字典元素用点号-->
<ul>
{% for key in dic.keys %} <!--dic.values-->
<li>{{ key }}</li>
{% endfor %}
{% for k,v in dic.items %}
<li>{{ k }}={{v}}</li>
{% endfor %}
</ul>
<hr/>
<!--if语法,注意==前后要空格-->
{% if a == 4 %}
<h1>hello</h1>
{% else %}
<h1>jmu</h1>
{% endif %}