使用Django搭建项目
创建并运行Django项目
第一种方式:
1. django-admin startproject appname
2. 使用PyCharm打开项目并创建虚拟环境
~ File ---> Settings ---> Project --->
Project Interpreter ---> Add
~ Terminal --->
python -m venv venv / virtualenv --python=/usr/bin/python3 venv
source venv/bin/activate / "venv/Scripts/activate"
3. 安装项目所需依赖项
pip install django==2.2.12
4. 运行项目
~ python manage.py runserver
~ Add Configuration --> + --> Python
--> Script Path (manage.py)
--> Parameters (runserver)
第二种方式:
1. 用PyCharm创建一个普通的Python项目
2. 安装Django所需的依赖项
~ pip install django==2.2.12
3. 把Python项目变成Django项目
~ django-admin startproject appname .
4. 运行项目
~ 第三种方式:
1. 克隆项目到本地
~ 使用PyCharm的"get from version control"
~ git clone [email protected]:jackfrued/appname.git
2. 创建虚拟环境
~ Linux/macOS: source venv/bin/activate
~ Windows: "venv/Scripts/activate"
3. 重建依赖项
~ pip install -r requirements.txt
对本地代码实施版本控制并同步到版本控制服务器
1. git init ---> 将普通文件夹变成版本仓库
2. git add . ---> 将文件从工作区同步到暂存区
3. git commit -m '...' ---> 将文件提交到本地仓库
4. git status / git log
5. git remote add origin
6. git push -u origin master ---> 将本地代码推到服务器
创建数据库,连接数据库
-- 创建数据库
create database appname default charset utf8;
-- 创建用户
create user 'Dxes'@'%' identified by '123456';
-- 给用户授权
grant all privileges on appname.* to 'Dxes'@'%';
将数据库创建好之后,在项目中的配置文件settings.py中配置连接数据库的代码
创建应用
~ python manage.py startapp 应用名字
~ django-admin startapp 应用名字
创建好应用之后要在settings.py文件中配置INSTALLED_APPS这个列表数据,在后面添加上你的应用名字:
INSTALLED_APPS = [
.....
'polls',
]
然后在自己创建的应用下的models.py文件中创建自己所需要的模板,例如:
之后再在控制台使用
python manage.py makemigrations 应用名字 ---->生成迁移
然后使用python manage.py migrate ----> 执行迁移
迁移成功之后,可到数据库查看建立的表
为了使做练习方便,添加数据更快捷,在django的服务器中有个控制台可以方便向数据库添加数据,
注册模型:
首先:在自己的应用目录下找到admin.py文件,需要在这个文件中注册自己创建的模板使用admin.site.register(自己的模型名,得先导入 )。
list_display = () # 页面要显示字段
list_per_page = 条数 # 页面显示数据的条数
search_fields = () # 给页面添加一个搜索框
ordering = () # 排序,默认是升序,要降序在字段前加减号.
list_display_links = () # 连接加在那个字段
然后在创建Django后台超级管理员账号
控制台输入:python manage.py createsuperuser
创建好账号之后访问
http://127.0.0.1:8000/admin
使用自己注册的django超级管理员账号密码登录后台查看信息。(添加应用所需数据)
在自己创建的应用下view.py这个文件中编写视图函数,用来渲染前端页面
在自己的项目下面可以创建一个templates文件夹用来存放前端的模板文件
在编写完视图函数时,想要页面正常跳转,需要在自己的Django项目下面的urls.py文件中配置需要渲染页面的url
注意:创建Django需要有的模板语法和空缺知识点
应用核心:
高内聚 低耦合
high cohesion low coupling
项目架构模式:MVC架构模式
数据和显示要分离(模型和视图解耦合)
同一个模型可以渲染成不同的视图,同一个视图可以加载不同的模型
Model - View - Controller
模型 视图 控制器
数据 数据的显示
Model - Template - View
模型 模板 视图(一部分控制器)
Django框架本身扮演了一部分控制器的角色
views.py - 控制器
~接收用户的请求,验证用请求
~操作模型
~产生响应(渲染页面)
Django ORM框架
对象关系映射框架 - 解决对象模型到关系模型双向转换问题
模板指令
{% if 条件语句%}
{% endif %}
{% for 变量 in 序列 %}
{% endfor %}
{{ 占位符 }}
属性过滤 : 布尔值| yesno: "男, 女"
CSRF ---> 跨站请求伪造 ---> {% csrf_token %}
Cross Site Request Forge
HTTP协议是无连接无状态协议 ---> 两次请求之间不会保存用户的任何数据
再次请求服务器的时候 服务器无法得知请求是来自哪个用户的请求
一般情况下服务器应用都需要记住用户来为用户提供更好的服务
用户跟踪 ---> 如果希望服务器记住用户可以使用以下三种辅助方式:
1. URL重写 http://www.baidu.com/?uid=xxxxxx
2. 隐藏域(隐式表单域)---> 埋点
3. 浏览器本地存储
~ cookie - 浏览器中的一个临时文件可以保存键值对
cookie中的数据在发起HTTP请求时会自动加载请求头中
~ window.localStorage / window.sessionStorage
cookie和session的关系
request.session ---> 服务器内存中的一个对象,可以保存用户数据
cookie ---> 用户浏览器临时文件 ---> cookie中保存了session的ID
如果浏览器禁用了cookie会发生什么
BASE64编码 ---> 用64个文字符号表示任意二进制数据
原理:将原来的三字节每6个比特一组变成四个字节
用A-Z、a-z、0-9、+和/一共64个字符来代表一个字节
Python ---> base64模块 ---> b64encode() / b64decode()
JavaScript ---> window ---> btoa() / atob()
非ASCII字符以及特殊字符都不能出现在URL中 需要处理成百分号编码
加密解密 RSA / AES ---> pycrypto
编码解码 base64 / 百分号编码 ---> base64 / urllib.parse
摘要签名 md5 sha1 sha256 sha512 ---> hashlib