python主流框架

  1. django: 大而全,自带功能非常的多,但是有时候会略显笨重,类似于’航空母舰’。
  2. flask:小而精,自带功能非常的少,但是第三方模块非常的多,类似于’游骑兵’。
  3. tornado异步阻塞框架速度极快,甚至可以用于充当游戏服务器
  4. 还有一些占比较小,但是也很厉害的框架fastapisanic

django版本
django3.X:自带异步功能
django2.X:默认支持异步
django1.X:默认支持异步
在这里插入图片描述

在这里插入图片描述

django基本操作命令

  1. 获取django版本
py -m django --version
  1. 创建项目
    打开命令行cd到想要创建目录下,然后运行下边代码
django-admin startproject mysite
  1. 创建app
    切到创建的项目目录
python manage.py startapp polls
  1. 启动项目
    切到创建的项目目录
python manage.py runserver

命令行pycharm区别

  1. 命令行不会自动创建templates文件夹
  2. 命令行不会在配置文件编写关于templates文件夹配置
    ‘DIRS’: [os.path.join(BASE_DIR, ‘templates’)]
  3. pycharm自动创建的第一个应用自动注册配置文件
  4. 针对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')  # 重定向

静态文件及相关配置

静态文件就是HTML页面上不经常改变的资源

  1. 第三框架文件
  2. css文件
  3. js文件
  4. 图片文件

针对静态文件资源一般都会放在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请求获取资源,也可以携带数据,以问号开始,什么等于什么格式,多个数据用&amp;隔开。数据只能是一些无关紧要的数据,大小一般是2~4k。GET请求没有请求体。

POST请求提交数据,数据都是放在请求体中,数据大小没有限制

from表单中的默认请求方式是GET请求,可以修改method参数method=‘post’ 。

from表单中的action参数控制数据提交地址

  1. 不填,朝当前页面提交
  2. 后缀,自动补全ip和port
  3. 全称,提交至参数网页

注意:在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'
    }
}

注意:需要在项目或应用下的上下init添加下边代码

import pymysql
pymql.install_as_MySALdb

如果还是报错,就安装mysqlclient模块即可

十一 ORM

ORM(Object Relational Mapping):对象关系映射,目的是使用python语法简单快捷的操作MySQL。

11.1 创建表

应用目录下的models.py中编写模型

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 数据库迁移命令

  1. models中有关数据可的操作记录下来(migrations文件夹中)
python manage.py makemigrations
  1. 将数据真正的同步数据库
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进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注