Django第一周
day0518:
抽象类:加上metaclass=ABCMeta,不能创建对象,专门用于继承
抽象方法:留给子类去实现的方法,@abstractmethod
枚举:变量只有有限个选项,可以使用枚举(继承Enum,使得可以遍历类函数)定义符号常量
符号常量优于字面常量
函数的参数可以使用*分隔,前面是位置参数,后面是关键字参数,否则报错
enumerate(list):将list每个元素组成一个有下标和元素的二元组
1. Web应用
— HTTP 请求 —>
浏览器 服务器
<— HTTP 响应 —
静态内容:HTML页面、CSS、JavaScript、图像、音视频等 ---> Nginx
动态内容:需要通过程序自动生成的部分 ---> Python ---> 运行Python程序的服务器
HTTP(s) ---> 超文本传输协议 ---> 使用了TCP提供的可靠传输服务
HTTP请求:请求行 / 请求头 / 空行 / 消息体
HTTP响应:响应行 / 响应头 / 空行 / 消息体
-
1. 为什么用Python做后端开发?
- 自动化运维 / 自动化测试 / 数据分析 / AI算法 / DevOps / SRE
-
服务器端应用开发(Web后端开发)
—> App/网站的服务端代码编写(数据接口开发)
—> 用代码生成网站/App需要的动态内容(数据)
—> CGI / WSGI —> PHP / ASP(C#) / JSP(Java) - Python也可以为作为服务器端应用开发的编程语言
- 优点:开发效率极高(用很少的代码可以做很多的事情)
- 缺点:执行效率不高(有很多公司更看重开发效率而不是执行效率)
-
Python有很多的框架专门用于服务器端应用开发
—> 使用框架可以减少重复代码和基础代码的编写
—> 程序员只需要专注于核心的业务逻辑代码的编写
2. 为什么选择Django框架?
—> 源于真实的CMS系统的项目
—> 生态圈非常繁荣 —> 大部分功能都有成熟的解决方案
1.创建Django项目并且实施版本控制
安装Django
pip3 install django== 2.2.12 -i https://pypi.douban.com/simple/(使用豆瓣镜像源下载速度会快一点)
查看Django版本
django-admin --version
创建Django项目
django-admin startproject hellodjango(filename)
进入到创建的Django项目文件夹中
cd hellodjango
初始化一个Git仓库
git init
根据需要添加版本控制忽略文件
touch .gitginore ------>http://gitignore.io/
vim .gitignore --进入并在里面加上 venv/ .idea/
将文件放到仓库的暂存区(缓存区)
git add
git add . 添加所有
将暂存区内容提交到本地版本仓库
git commit -m ‘提交的原因’
关联远端仓库地址
git remote add origin(给url取名字) 仓库的url(ssh)
向远端仓库推送代码
git push -u origin master
从远端仓库克隆到pycharm,并设置好保存的地方
git clone url
在pycharm给项目配置Python环境 —>settings
并且给项目配置虚拟环境
保存在项目文件夹下,并且命名为venv,虚拟环境选择Python3版本,系统会自动检测,然后点击ok
打开控制台Terminal在虚拟环境下安装Django,方法和上面一样
pip install django==2.2.12 -i https://pypi.doubanio.com/simple
安装mysqlclient
pip install mysqlclient -i https://pypi.doubanio.com/simple
查看已安装的包
pip freeze
重定向生成依赖项清单
pip freeze > requirements.txt
到这里环境配置基本完成
2.使用Django框架
2.1在项目文件夹下创建Django应用
方法一:django-admin startapp 应用名
方法二:python manage.py startapp 应用名
一个Django项目中可以包含一个或多个Django应用
在settings.py进行基本配置
将创建的应用名添加到INSTALLED_APPS ---->应用名
修改编码方式为中文
LANGUAGE_CODE = ‘zh-hans’
修改时区
TIME_ZONE = ‘Asia/Chongqing’
2.2编写视图函数
views.py —> 视图函数(接收来自浏览器的请求,给用户以响应)
def show_index(request: HttpRequest):
return HttpResponse(content)
render(request, 'index.html', {...}) ---> HttpResponse
2.3配置URL
使用视图函数需要配置URL映射(请求的路由) —> urls.py
URL(统一资源定位符)相对路径 -----> 视图函数 ----> path
urlpatterns=[
path('hello/', show_index),]
2.4前端渲染和后端渲染
真正的项目开发中,前端工程师会提供静态页面,如何让静态页面上呈现动态内容???
方法一(前端渲染 —> 在浏览器中完成渲染操作):
前端通过Ajax请求获得后端提供的数据,用JavaScript代码使用数据渲染页面。
前后端分离开发!!!
方法二(后端渲染 —> 在服务器端用Python程序完成):
把前端提供的静态页改造成模板页,把动态内容换成占位符,待会通过
Python程序把动态内容填入进去,直接把静态页处理成动态页
编写、配置、渲染模板页
<ul id="fruits">
{% for fruit in fruits %}
<li>{{ fruit.name }}: {{ fruit.price }}<a href="">×</a></li>
{% endfor %}
</ul>
创建templates文件夹(静态页放到这里)
在settings.py里配置加载静态资源的路径
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates'), ],
'APP_DIRS': True,
...
},
]
运行Django项目
Django自带的测试服务器
python manage.py runserver 默认
python manage.py runserver 0.0.0.0:8000 还可以选择ip和端口号
day0519
mysql创建新用户:
1. 创建用户:create user ‘jackfrued’@’%’ identified by ‘jackfrued.618’;
2. 给权限:grant all privileges on vote.* to ‘jackfrued’@’%’;
2. 刷新权限:flush privileges;
使用MySQLsilent可直接使用,pymysql需要配置以下:
需要添加的代码:
global version_info
version_info = (1, 4, 2, “final”, 0)
if type(query) == bytes:
query = query.decode(errors='replace')
elif type(query) == str:
query = query.encode(errors='replace')
else:
query = force_text(query, errors='replace')
模型创建表(正向工程):
生成迁移文件:python manage.py makegrations <可以指定app应用名>
生成表:python manage.py migrate <可以指定app>
pycharm进入交互式环境:
在Terminal中:python manage.py shell
过Django自带的界面管理数据库:
1. 进入Django管理界面(admin.py)
1) 创建超级用户:python manage.py createsuperuser
2. 在admin.py中注册:
1)admin.site.register(Subject)
2)注册详细的管理界面:
class SubjectAdmin(admin.ModelAdmin) :
内容
添加SubjectAdmin:
admin.site.register(Subject,SubjectAdmin)
day0521
MVC架构图解,实质上就是MTV
day0523(项目待更新中~)
- 表创建模型(反向工程):
python manage.py inspectdb > models.py