Django官网
-
查看django版本
import django
django.version -
安装
- 在线安装
sudo pip3 install django 最新版本
sudo pip3 install django==1.11.8 指定版本 - 离线安装
下载安装包
Django-1.11.8.tar.gz
#tar -xvf Django-1.11.8.tar.gz
cd Django-1.11.8
sudo python3 setup.py install - 使用wheel安装
下载
#pip3 download -d 路径
安装
pip3 install Django-1.11.8.whl
- 在线安装
-
卸载
pip3 uninstall Django
使用Django框架
- 创建练习项目
指令 #django-admin startproject 项目名
#django-admin startproject mywebsite1 - 运行
cd mywebsite1/
python3 manage.py runserver
指定端口
python3 manage.py runserver 5000 指定设备有5000端口
指定IP+端口
python3 manage.py runserver 192.168.40.129:8000
指定IP需要修改settings.py
ALLOWED_HOSTS = [] #空列表只允许127.0.0.1访问
ALLOWED_HOSTS = [’*’] 允许任意访问 仅限调试使用
URL介绍
http://www.tmooc.cn/live
路由
URL中不看域名的部分
/user/user_info
/cart/cart_list
urls.py
urlpatterns是一个路由列表,保存url()实例
url(r'^admin/', admin.site.urls),
url(regex,views,kwargs=None,name=None)
1.regex:字符串类型 匹配请求的路径 通常为正则表达式
2.views:表示路径对应的视图函数
3.kwargs:向视图传递参数
4.name:为地址取一个别名
试用后台管理系统
-
将django准备的数据库内容迁移到本地数据库
python3 manage.py migrate python3 manage.py createsuperuser admin shibw@tedu.cn 1234.com 1234.com python3 manage.py runserver 访问127.0.0.1:8000/admin 输入用户名密码进入
-
**在项目中新建views.py **
from django.http import HttpResponse def home(request): return HttpResponse('<h1>这是我的第一个首页</h1>')
-
在项目中/urls.py
from . import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^$',views.home), ]
练习:
建立网站
http://127.0.0.1:8000 首页
http://127.0.0.1:8000/page1 第一个页面
显示:这是我的第一个页面
http://127.0.0.1:8000/page2 第二个页面
显示:这是我的第二个页面
项目/urls.py
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^$',views.home),
url(r'^page1/$',views.page1),
url(r'^page2/$',views.page2),
]
项目/views.py
from django.http import HttpResponse
def home(request):
return HttpResponse('<h1>这是我的第一个首页</h1>')
def page1(request):
return HttpResponse('这是第一个页面')
def page2(request):
return HttpResponse('这是第二个页面')
带参数的视图函数
urlpatterns = [
#127.0.0.1:8000/year/2015
url(r'^year/(\d{4})$',views.page_year),
url(r'^date/(\d{4})/(\d+)/(\d+)$',views.date),
]
接收参数并显示到页面
def page_year(request,year):
#year对应正则表达式的第一个分组() 2015
return HttpResponse('当前的年份:' + year)
接收多个参数
def date(request,year,month,day):
return HttpResponse(year+'年'+month+'月'+day+'日')
访问地址
http://127.0.0.1:8000/birthday/四位数字/一到两位数字/一到两位数字
显示 生日为:xxxx年xx月xx日
如 http://127.0.0.1:8000/birthday/2000/01/01
显示 生日为:2000年01月01日
urlpatterns = [
url(r'^birthday/(\d{4})/(\d{1,2})/(\d{1,2})$',views.birthday)
]
def birthday(request,year,month,day):
return HttpResponse('生日为:'+year+'年'+month+'月'+day+'日')
正则表达式的命名分组(?Pxxx)
http://127.0.0.1:8000/students/shibw/20
显示学生姓名+年龄
url(r'^students/(?P<name>\w+)/(?P<age>\d{1,2})$',
views.students)
def students(request,name,age):
return HttpResponse('学生姓名:'+name+' 年龄:'+age)
通过url()传参
url(regex,views,kwargs,name)
url(r’^students/$’,views.students,
{‘name’:‘shibw’,‘age’:‘20’})
练习
http://127.0.0.1:8000/goods/任意数字
显示 当前查看的是id为x 的商品
如 http://127.0.0.1:8000/goods/1
显示 当前查看的是id为1的商品
HttpRequest对象
视图函数的第一个参数是HttpRequest对象
服务器接收到http协议的请求后,会根据报文创建HttpRequest对象
HttpRequest对象属性
-
path 字符串 表示请求路由的信息
-
method 表示HTTP请求方式 通常’GET’和’POST’
-
encoding 表示提交数据的编码方式
如果没有指定 默认为None 表示同浏览器编码方式
可直接指定编码方式 通常在表单中 修改表单数据的编码def home(request):
return HttpResponse(request.path) -
GET:包含get请求中所有的数据
-
POST:包含post请求的所有数据
-
FILES:包含所有上传的文件
-
COOKIES:包含所有cookie 键和值都为字符串
-
session:类似字典形式 包含当前会话中的数据
-
body:请求主体内容
-
environ:包含客户端运行的环境变量的信息
方法:
is_ajax()
HTTP请求方式POST GET HEAD
HTTP状态码
200 请求成功
301 资源永久转移到其他URL
404 请求的资源不存在
500 内部服务器错误
创建应用 app
python3 manage.py startapp 应用名称
在项目/settings.py中添加应用
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'music',
]
分布式路由
-
在应用 music 中新建路由文件 urls.py
from django.conf.urls import url from . import views urlpatterns = [ url(r'^$',views.index) ]
-
在应用music 的views.py中
from django.http import HttpResponse def index(request): return HttpResponse('这是Music的首页')
-
在主目录mywebsite1的urls.py中添加应用的路由
from django.conf.urls import url,include url(r'^music/',include('music.urls')),
练习
新建项目netease
在项目中添加三个应用 music sport user
分别显示三个应用的首页
练习:
新建项目 polls
在polls中新建应用poll
应用poll功能:
127.0.0.1:8000 显示投票应用首页
127.0.0.1:8000/x 显示x号问题内容
127.0.0.1:8000/x/result 显示x号问题投票结果
#django-admin startproject polls
#python manage.py startapp poll
向项目中添加应用
polls/settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'poll',
]
#在poll/views.py中定义应用视图函数
def index(request):
return HttpResponse('投票首页')
def detail(request,id):
return HttpResponse(id+'号问题详情')
def result(request,id):
return HttpResponse(id+'号问题结果')
#在poll/urls.py中定义应用路由
from django.conf.urls import url
from . import views
urlpatterns = [
url('^$',views.index),
url('^(?P<id>\d+)/$',views.detail),
url('^(?P<id>\d+)/result/$',views.result)
]
#将应用路由文件添加到项目主路由文件
from django.conf.urls import url,include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^',include('poll.urls'))
]