python--Django学习过程备忘
1.原理
1589777036-2760-fs1oSv4dOWAwC5yW.png2.创建项目
命令行输入:
django-admin startproject xxxx
image.png
目录结构如图
3.运行项目
命令行输入:
python manage.py runserver
浏览器中打开网址即可
4.setting文件配置
①将语言环境设置成中文
LANGUAGE_CODE = 'zh-Hans'
②将数据库改成mysql(对象关系映射(Object Relational Mapping,简称 ORM )无法操作到数据库级别,只能操作到数据表,所以要先自己建库)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'factory',
'USER':'root',
'PASSWORD':'123456',
'HOST':'127.0.0.1',
'PORT':'3306',
}
}
在项目根目录下中的init.py文件中添加代码:
import pymysql
pymysql.install_as_MySQLdb()
这时候再打开项目会报错,需要在数据库中建factory数据库,并将Django架构自带的应用的数据库迁移到库里(方法见5)
③创建tamplate文件夹后要在这里声明
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],#这一句如果没有会报错:django.template.exceptions.TemplateDoesNotExist: seach.html
'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',
],
},
},
]
5.将INSTALLED_APPS中应用的数据库迁移到库里
(Django架构自带的)
python manage.py makemigrations #创建目录和迁移文件
python manage.py migrate #迁移数据库,在自己的库里创建表格
(自建应用 app1)
python manage.py makemigrations app1 #创建目录和迁移文件
python manage.py migrate app1 #迁移数据库,在自己的库里创建表格
6.创建后台超级管理员
python manage.py createsuperuser --username=admin --email=954979953@qq.com
创建完成后在数据库的auth_user表中可以看到创建的用户名
7.查看后台管理界面
image.png若显示不正常,https://blog.csdn.net/qq_34919833/article/details/108041315
7.1设置其他主机可以用ip+端口访问
在setting.py中设置
ALLOWED_HOSTS = ['192.168.0.106','127.0.0.1']
必须使用0.0.0.0启动
python manage.py runserver 0.0.0.0:8000
image.png
8.创建应用
python manage.py startapp app1
image.png
结构如图
记得在setting.py中注册
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app1'
]
9.生成当前项目依赖清单request-ments.txt
根目录运行:
pip freeze >requirements.txt
当项目移到别处部署时,重建项目依赖:
pip install -r requirements.txt
10.模型操作
https://www.runoob.com/django/django-model.html
11.视图使用
1.在项目下的urls.py中指定应用下的urls.py,实现应用和项目的解耦。具体如下:
项目urls.py:
path('product/', include('product_md.urls')),
#指定127.0.0.1:8000/product/xxx的路径都由具体应用的urls.py指定
应用(product)下urls.py
path('hello/', views.hello),
2.HttpRequest对象
每当请求来的时候,Django会创建一个携带请求元数据的HttpRequest对象,传递给视图函数的第一个参数。
属性和方法
①method属性
标识请求使用的HTTP方法,取值为'GET' 'POST' 'PUT'等
@csrf_exempt 跨域请求
@require_http_methods(["GET","POST"]) 允许的请求方法
@require_GET 只允许GET方法
②scheme属性
标识请求的协议类型,取值 http https
③path属性
返回当前请求页面的路径,但是不包括协议类型和域名
如http:127.0.0.1:8000/post/hello/
path返回的是/post/hello/
④GET
类字典对象,包含GET请求中的所有参数
如http:127.0.0.1:8000/post/hello/?a=1&b=2&c=3
用法一 requset.GET['a'] 如果a不存在则会抛出异常
用法二 requset.GET('d',0) 如果d不存在则返回0,更安全
⑤POST
与get类似,保存的是POST请求中提交的表单数据
用法与GET一样
若表单内容有上传文件时,文件相关信息不会保存在POST,而是存在FILES中
⑥FILES
类字典对象
其中的每个键是<input type="file"name=''"/>中name的值,
每个值都是一个Uploadfile
⑦COOKIES
字典对象,键和值都是字符串
⑧META
字典对象
包含所有HTTP头部信息
⑨user
标识当前登录用户的AUTH_USER_MODEL实例,是Django用户系统中的User(auth.User)类型
3.HttpResponse对象
在视图中主动创建并返回
①status_code
用于标识一次请求的状态,取值200 404 500(服务器内部错误)
②content
存储相应内容的二进制字符串
③write方法
向响应视图中添加响应数据
https://www.runoob.com/django/django-views.html
响应对象主要有三种形式:HttpResponse()、render()、redirect()。
HttpResponse(): 返回文本,参数为字符串,字符串中写文本内容。如果参数为字符串里含有 html 标签,也可以渲染。
render(): 返回文本,第一个参数为 request,第二个参数为字符串(页面名称),第三个参数为字典(可选参数,向页面传递的参数:键为页面参数名,值为views参数名)。
redirect():重定向,跳转新页面。参数为字符串,字符串中填写页面路径。一般用于 form 表单提交后,跳转到新页面。
render 和 redirect 是在 HttpResponse 的基础上进行了封装:
render:底层返回的也是 HttpResponse 对象
redirect:底层继承的是 HttpResponse 对象
4.基于类的视图
类视图可以利用不同的实例方法响应不同的HTTP请求方法,且可以用面向对象的技术奖代码分解成可重用的组件。
①
12.模板
Django 模板标签
变量
模板语法:
view:{"HTML变量名" : "views变量名"}
HTML:{{变量名}}
HelloWorld/HelloWorld/views.py 文件代码:
from django.shortcuts import render
def runoob(request):
views_name = "菜鸟教程"
return render(request,"runoob.html", {"name":views_name})
templates 中的 runoob.html :
<p>{{ name }}</p>