python学习: Django 简单使用(1)
HTTP介绍
Http协议:超文本传输协议,定义浏览器和网络服务器之间的通信规则。Http协议规定客户端(浏览器)发送给服务器的内容格式,也规定服务器返回内容的格式。
Http协议包括请求协议和响应协议。Http协议是无状态协议,一次请求/响应结束后,服务就完成了,不保存状态,再次又是新的请求/响应。所以需要借助cookie,session保存状态。
请求协议
请求协议格式:
请求首行;
请求头;
空行;
请求体;
示例:
请求头:
Host: home.firefoxchina.cn
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: text/css,*/*;q=0.1
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
DNT: 1
Connection: keep-alive
Cookie: uid=rBADnV1CLemucnyOmCCtAg==; Hm_lvt_dd4738b5fb302cb062ef19107df5d2e4=1564618219; Hm_lpvt_dd4738b5fb302cb062ef19107df5d2e4=1564618219
Accept:浏览器能够接收的内容,text/html,application/xhtml+xml等;
Accept-Language:支持语言;
Accept-Encoding:接收文件格式,支持压缩文件;
Connection: keep-alive,保持连接一段时间;
Cookie:保存用户状态信息;
Host:访问域名;
请求体:
浏览器发送给服务器的数据,GET没有请求体,POST有请求体。一般登陆注册的用户信息,form表单提交的信息放在请求体中。
GET请求:
没有请求体;
请求数据在请求地址栏,大小不超过1kb;
POST请求:
地址栏只有url地址;
使用请求体,保存请求数据;
数据大小没有上限;
请求体中存在中文,会使用url编码;
响应协议
响应协议格式:
响应首行;
响应头;
空行;
响应体;
响应头:
HTTP/1.1 200 OK
Date: Tue, 09 Jul 2019 01:43:00 GMT
Content-Type: text/css
Transfer-Encoding: chunked
Connection: keep-alive
Expires: Wed, 28 Feb 2029 21:02:42 GMT
Server: nginx
Last-Modified: Tue, 29 Jan 2019 09:51:58 GMT
ETag: W/"5c50223e-7d2"
Cache-Control: max-age=315360000
Content-Encoding: gzip
Age: 1
X-Via: 1.1 czdx83:2 (Cdn Cache Server V2.0), 1.1 PSgdzjdx6cx67:8 (Cdn Cache Server V2.0)
HTTP/1.1:请求协议;
Status code:状态码200请求成功;404资源没有找到;500服务器出现问题;
Server:服务器;
Wsgiref模块
Python的wsgiref模块是Python封装的一个web请求模块,将socket连接,连接监听这些操作封装的web模块。
''''
自定义web框架
封装了socket连接等过程
wsgiref是python封装的
'''
from wsgiref.simple_server import make_server
def application(environ,start_response):
#服务器获取浏览器包装的数据
print(environ);
#服务器响应返回数据
#设置响应头
start_response('200 OK',[('Content-type','text/html')]);
#返回响应内容,响应体
return ['<h1>hello world</h1>'.encode("utf-8")]
httpd = make_server('',8080,application);
#监听连接
httpd.serve_forever();
MVC模式
MVC模式:Model(模型)、View(视图)、Controller(控制器)
MTV模式:Model(模型)、Template(html页面模板文件)、View(视图函数)。MTV是Python的Django特定说法,类似MVC。
Django
Django安装
进入https://www.djangoproject.com/download/ 网站下载对应版本源码包。
我们使用的是python3版本,最好使用Django2版本。

将Django-2.1.10.tar.gz解压到当前目录,Django-2.1.10目录可以发现setup.py文件。
在命令行使用python setup.py执行安装程序。因为我们同时安装了python2和python3,重命名了相应python.exe的执行文件。
我们需要python3安装Django,需要用python3执行命令python3 setup.py install。需要到我们解压目录下执行 命令。


Django创建项目
使用命令django-admin startproject firstDjango,我们配置了python2.7/Scripts和python3.7/Scripts的环境变量,如果直接执行不知道调用的是哪个版本的Django。
所以我们将python3.7/Scripts中django-admin.exe修改为django-admin2.exe。django-admin-script.py修改为django-admin2-scritpt.py。


然后执行命令django-admin2 startproject firstDjango。

可以在我们当前目录看到firstDjango的项目文件夹。
项目目录结构:


创建项目后,我们还需要在项目下创建应用。
使用命令python3 manage.py startapp helloApp

可以看到我们创建的应用helloApp。


helloApp的目录结构。

将我们创建的Django项目使用Pycharm打开。
setting.py:项目配置信息;
urls.py:项目负责url信息配置;
Django使用流程
setting.py:
添加我们创建helloApp的应用
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'helloApp',
]
urls.py:
添加:path('show_time/',views.show_time)。show_time是views中的视图函数。
from django.contrib import admin
from django.urls import path
from helloApp import views
urlpatterns = [
path('admin/', admin.site.urls),
path('show_time/',views.show_time)
]
views.py:
def show_time(request):
#response返回信息
response = HttpResponse("hello");
return response;
终端执行项目python3 manage.py runserver
在浏览器访问就可以看到返回信息

项目文件下创建templates文件夹,创建hello.html文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>hello page</title>
</head>
<body>
<h1>hello</h1>
<h2>当前时间:{{time}}</h2>
</body>
</html>
修改setting.py文件,“DIRS”中加入templates。
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': ["templates"],
'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',
],
},
},
]
将视图函数修改为:
def show_time(request):
## response返回信息
# response = HttpResponse("hello");
# return response;
t = time.ctime();
#返回一个html页面,使用字典返回参数{},将参数渲染到html中
return render(request,"hello.html",{"time":t});
浏览器访问显示:

本文来自博客园,作者:渔歌晚唱,转载请注明原文链接:https://www.cnblogs.com/tangToms/articles/14151279.html

浙公网安备 33010602011771号