一 python主流框架
- django: 大而全,自带的功能非常的多,但是有时候会略显笨重,类似于’航空母舰’。
- flask:小而精,自带的功能非常的少,但是第三方模块非常的多,类似于’游骑兵’。
- tornado:异步非阻塞框架,速度极快,甚至可以用于充当游戏服务器。
- 还有一些占比较小,但是也很厉害的框架:fastapi、sanic…
django版本:
django3.X:自带异步功能
django2.X:默认不支持异步
django1.X:默认不支持异步
二 django基本操作命令
py -m django --version
django-admin startproject mysite
python manage.py startapp polls
python manage.py runserver
三 命令行与pycharm的区别
- 命令行不会自动创建templates文件夹
- 命令行不会在配置文件编写关于templates文件夹的配置
‘DIRS’: [os.path.join(BASE_DIR, ‘templates’)] - pycharm自动创建的第一个应用会自动注册到配置文件中
- 针对db.sqlite3文件不用去在乎它有没有创建 只要运行了django会自动出来
四 django目录结构
-mysite文件夹名称
--mysite同名文件夹
----settings.py 项目配置文件
----urls.py 总路由层
--manage.py 项目入口文件
--db.sqlite3 运行项目后自动创建(django自带的小型数据库)
--templates文件夹 存储HTML文件
--应用文件夹 通过命令创建(可以创建任意个数)
----migrations文件夹 存储数据迁移记录
----admin.py django提供的后台管理
----apps.py 用于配置文件的应用注册(创建的应用都需要去配置文件中注册)
----models.py 模型层(与数据库相关)
----views.py 视图层(编写当前应用核心业务逻辑代码)
----tests.py 自带的测试文件
urls.py 路由层
views.py 视图层
templates 模板层
models.py 模型层
五 django三板斧
from django.shortcuts import render, HttpResponse, redirect
# Create your views here.
def get_info(request):
import pymysql
conn = pymysql.connect(
user='root',
password='',
port=3306,
host='127.0.0.1',
database='day55',
autocommit=True,
charset='utf8'
)
cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
sql = 'SELECT * FROM user_info'
cur.execute(sql)
res = cur.fetchall()
# 返回HTML页面
return render(request, 'user_info.html', {'user_info': res})
def login(request):
return HttpResponse('login') # 返回字符串
def index(request):
return redirect('HTTPS://www.baidu.com') # 重定向
六 静态文件及相关配置
针对静态文件资源一般都会放在static文件夹内,当static文件夹有很多不同类型的文件,也可以进行分类。
针对静态文件的访问需要提前开设相应的接口
在项目同名文件夹下的settings.py中添加配置。
STATIC_URL = 'static/' # 接口前缀
STATICFILES_DIR = [
os.path.join(BASE_DIR, 'static')
]
{% load static %}
<link rel="stylesheet" href="{% static 'bootstrap-3.4.1-dist/bootstrap-3.4.1-dist/css/bootstrap.min.css' %}">
<script src="{% static 'bootstrap-3.4.1-dist/bootstrap-3.4.1-dist/js/bootstrap.min.js' %}"></script>
七 请求方式
GET请求:获取资源,也可以携带数据,以问号开始,什么等于什么的格式,多个数据用&隔开。数据只能是一些无关紧要的数据,大小一般是2~4k。GET请求没有请求体。
POST请求:提交数据,数据都是放在请求体中,数据大小没有限制。
from表单中的默认请求方式是GET请求,可以修改method参数:method=‘post’ 。
注意:在django中提交post请求要在settings中的中间件中注释一行代码,不然会报错。
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
八 request方法
GET
request.method 返回请求方式,纯大写字符串
request.GET 返回类似是一个列表套字典类型
request.GET.get(key) 获取字典key对应的列表最后一个值
request.GET.getlist(key) 获取字典key对应的列表
POST
request.POST
request.POST.get(key)
request.POST.getliast(key)
九 pycharm连接MySQL
十 django连接MySQL
django默认数据库是sqlite3,想要连接数据库需要修改settings.py中的数据库相关配置。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'day56',
'USER': 'root',
'PASSWORD': '',
'POST': 3306,
'HOST': '127.0.0.1',
'CHARSET': 'utf8'
}
}
import pymysql
pymql.install_as_MySALdb
如果还是报错,就安装mysqlclient模块即可。
十一 ORM
ORM(Object Relational Mapping):对象关系映射,目的是使用python语法简单快捷的操作MySQL。
11.1 创建表
from django.db import models
# Create your models here.
class Test(models.Model): # 类似定义表名
id = models.AutoField(primary_key=True) # 类似于定义了主键
name = models.CharField(max_length=32) # 定义普通字段
password = models.BigIntegerField()
11.2 数据库迁移命令
python manage.py makemigrations
python manage.py migrate
当修改了models中与数据库相关的代码,都必须执行上边两行命令。
注意:使用ORM创建表时,可以不用创建主键id,ORM会自动创建。
11.3 ORM语法
- 查
models.User.objects.filter(username='jasper').first()
- 增
modeles.User.objects.create()
- 改
models.User.objects.filter().update()
- 删
models.User.object.filter().delete()
11.4 ORM外键关联
from django.db import models
# Create your models here.
class Book(models.Model):
name = models.CharField(max_length=32)
# 书籍表和出版社表建立一对多关系 外键字段建立在多的一方
publish = models.ForeignKey(to='Publish', on_delete=models.CASCADE)
class Publish(models.Model):
name = models.CharField(max_length=32)
# 出版社和作者之间是多对多 外键建立在任意一方
auth = models.ManyToManyField(to='Auth')
class Auth(models.Model):
name = models.CharField(max_length=32)
# 作者与作者信息表是一对一关系 外键字段建立在查询频率多的一方
auth_info = models.OneToOneField(to='AuthInfo', on_delete=models.CASCADE)
class AuthInfo(models.Model):
addr = models.CharField(max_length=32)
原文地址:https://blog.csdn.net/weixin_68531269/article/details/126609568
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_33756.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!