首页 > 数据库 >request对象方法与django连接MySQL

request对象方法与django连接MySQL

时间:2022-08-31 23:11:10浏览次数:58  
标签:文件 models request django MySQL print POST

静态文件配置

1.编写一个登录功能
1.1创建django项目并创建一个app

1.2在urls.py添加一组对应关系
urlpatterns = [
    path('admin/', admin.site.urls),
    path('login/', views.login),
]

1.3在app的views.py中编写登录核心逻辑
def login(request):
    return render(request, 'login.html')

1.4利用三板斧与前端做交互
'提前在urls.py中开设了相应的资源连接,才可以在访问django框架资源的时候拿到数据,如果访问不到资源,那就是没有开设相应的接口'

2.静态文件
html页面上使用的不经常改变的资源
2.1不同文件资源
第三方框架文件、css文件、js文件、图片文件
'静态文件资源一般都会放在static文件夹内'

2.2当static目录下出现了很多不同类型的静态文件资源,还可以分类管理
	others文件夹(第三方框架文件)
	css文件夹(所有css文件)
	js文件夹(所有js文件)
	img文件夹(所有img文件)

3.对静态文件资源的访问也需要提前开设相应的接口
在文件同名文件夹下settings.py
STATIC_URL = '/static/'  # 接口前缀(访问静态资源必须要以static开头)
 # 静态文件资源配置
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]

4.动态解析
    {% load static %}
    <link rel="stylesheet" href="{% static  'bootstrap-3.4.1-dist/css/bootstrap.min.css' %}">

请求方法

'URL:统一资源定位符(网址)'
1.GET请求
1.1朝别人索要数据,也可以携带而外的数据
在网址栏显示:url?xxx=yyy&aaa=bbb&ccc=ddd

1.2上述携带数据的方式有两个限制
数据只能是一些无关紧要的非敏感数据
数据大小有限制 2KB~4KB左右
'GET请求没有请求体(HTTP数据格式)

2.POST请求
朝别人提交数据,也可以携带额外数据
数据都在请求体中,并且数据大小没有限制

3.form表单默认的数据提交方式是get
3.1在html文件修改:<form action="" method="post">
method='post'
action>>>控制数据的提交地址

3.2action地址编写方式
方式1:不写,朝当前页面所在的地址提交
方式2:写后缀(/index/),自动补全ip和post
方式3:写全称(https://www.baidu.com/)

4.提交post请求前需要去配置文件中注释一行代码
在文件同名文件夹下settings.py文件里注释下列第四行
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对象方法

request.method>>>获取请求方式,结果是纯大写的字符串
print(request.method)
# POST

request.POST>>>获取POST请求发送来的普通数据(不包括文件)
print(request.POST)
# <QueryDict: {'username': ['kevin', 'barry'], 'password': ['123']}>     

request.POST.get()>>>默认只获取列表中最后一个数据值
print(request.POST.get('username'))
# barry

request.POST.getlist()>>>获取键对应的整个列表,无论有几个数据值
print(request.POST.getlist('username'))
# ['kevin', 'barry']

request.GET>>>获取url后面后面携带的非敏感数据
print(request.GET)
# <QueryDict: {'aaa': ['111'], 'bbb': ['333']}>

request.GET.get()>>>默认只获取列表中最后的一个数据值
print(request.GET.get('aaa'))
# 333

request.GET.getlist()>>>获取键对应的整个列表,无论有几个数据值
print(request.GET.getlist('aaa'))
# ['111', '333']
img

pycharm连接MySQL

1.查看pycharm提供的database按钮
左下角或侧边栏,若是没有则下载插件或卸载重装

2.首次连接数据库需要下载对应的驱动(点一下Download)

3.驱动下载好后,在user:的输入框内输入用户名,在password:输入框内输入密码,在Database:输入框内输入数据库库名,在点击Test Connection,测试能否连接到数据库,在点Apply、点OK即可

4.可以进行简单的增删改查

django连接MySQL

django默认使用的是sqliste3,但是这款数据库一般只用于本地测试,功能较少

1.在配置文件中修改配置
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 指定数据库软件名称
        'NAME': 'db1',  # 指定库名
        'USER': 'root',
        'PASSWORD': '321',
        'HOST': '127.0.0.1',
        'PORT': 3306,
        'CHARSET': 'utf8'
    }
}

2.指定连接MySQL的模块
django1.11版本需要在项目或者应用目录下的__init__.py中编写一行代码
    	import pymysql
       pymysql.install_as_MySQLdb()
django2.2以上版本需要下载mysqlclient模块

django orm

1.ORM:对象关系映射
类>>>映射成>>>表
对象>>>映射成>>>记录
对象.属性>>>映射成>>>字段对应的值
'ORM让不会MySQL的python程序员使用python操作MySQL'

2.先去应用目录下的models.py编写模型类
# 类似于定义表名
class User(models.Model):
    # 类似于定义主键(id int primary key auto_increment)
    id = models.AutoField(primary_key=True)
    # 类似于定义普通字段(name varchar(32))
    name = models.CharField(max_length=32)
    # 类似于定义普通字段(pwd int)
    pwd = models.IntegerField()
    
3.数据库迁移/同步命令
2.1将models中有关数据库的操作记录下来(migrations文件夹)
python38 manage.py makemigrations、
2.2将操作真正影响到数据库中
python38 manage.py migrate
'当修改了models中与数据库相关的代码,都必须执行上述的命令'
ps:可以简写,在pycharm上方Tools中Run manage.py Task后可以只写makemigrations、migrate

4.表的主键在orm中可以不写,orm会自动帮你添加一个id的主键,如果需要的主键名称不是id,就需要自己创建

orm语法

1.查
models.User.objects.filter()	结果可以看成是一个列表套数据对象
'可以使用first()方法获取对象,如果没有值会返回None'

2.增
models.User.objects.create()

3.该
models.User.objects.filter(id=1).update(name='barry233')

4.删
models.User.objects.filter(id=4).delete()

5.实例
from app01 import models


def login(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        user_obj = models.User.objects.filter(name=username, pwd=password).first()
        if user_obj:
            print(user_obj.id)  # 1
            print(user_obj.name)  # barry
            print(user_obj.pwd)  # 123
            return HttpResponse('登录成功')
        return HttpResponse('用户名或密码错误')
    return render(request, 'login.html')

orm外键关联

1.一对多
外键字段建在多的一方

2.多对多
外键字段可以直接写在其中一张表中,orm会自动帮你创建第三张表

3.一对一
外键字段建在查询频率较高的表中

class Book(models.Model):  # 书
    title = models.CharField(max_length=32)
    # 书于出版社是一对多,书是多
    publish = models.ForeignKey(to='Publish', on_delete=models.CASCADE)
    # 书于作者是多对多
    authors = models.ManyToManyField(to='Authors')


class Publish(models.Model):  # 出版社
    pub_name = models.CharField(max_length=32)


class Authors(models.Model):  # 作者
    name = models.CharField(max_length=32)
    # 作者与作者资料是一对一
    detail = models.OneToOneField(to='Detail', on_delete=models.CASCADE)


class Detail(models.Model):  # 资料
    name = models.CharField(max_length=32)

标签:文件,models,request,django,MySQL,print,POST
From: https://www.cnblogs.com/riuqi/p/16644887.html

相关文章

  • 今日内容 Django连接MySQL操作及ORM基本操作
    静态文件及相关配置1.先编写一个登录功能(1)创建django项目并创建一个app(2)在url.py添加一组对应关系(3)在app的views.py中编写登录核心逻辑......
  • Java JDBC 入门:通过 JDBC 访问 MySQL
    下载驱动包从MySQL官网下载驱动包,最新版本是8.0.x。我选择的是稍老一点的版本5.1.49,需要点击Archives进入新的下载页面。再次选择版本号,OperatingSystem只有一......
  • django2
    django框架请求流程图创建Django静态文件及相关配置Django项目模拟1​ 1.先编写一个登录功能​ 1.创建django项目并创建一个app​ 2.在路由层urls.py文件中添加......
  • MySQL连接查询
    目录左连接右连接子查询左连接​ 左连接以tb_students_info为基表,以tb_course为参考表,进行查询时可以查询到基表tb_students_info和参考表tb_course匹配的条件,如果基表......
  • 【2022-08-31】Django框架(二)
    Django框架(二)静态文件及相关配置1.静态文件 html页面上使用的不经常改变的资源1.第三方框架文件,如Bootstrap框架2.css样式文件3.网站js文......
  • 注解@RequestParam和注解@RequestBody的作用
    Springboot注解@RequestParam和@RequestBody@RequestParam@RequestMapping(value="test")@ResponseBodypublicObjecttest(@RequestParamIntegerus......
  • Linux 中断 request_threaded_irq request_irq
     https://blog.csdn.net/mcsbary/article/details/103728816总结:request_threaded_irq:中断处理线程化,很好解决高频率的中断响应,类似异步处理request_irq:类似于同步处理......
  • 面试高频,屡试不爽的mysql索引特性总结
    (1)FROM子句组装来自不同数据源的数据(2)WHERE子句基于指定的条件对记录进行筛选(3)GROUPBY子句将数据划分为多个分组(4)使用聚合函数进行计算(5)......
  • 记一次EF+Mysql所遇到的事务不生效的的坑
    业务场景:近期写的一个项目,整个项目采用的DDD(领域驱动)设计,所以刚开始设计的时候就将各个业务以聚合根的方式进行划分,以该业务场景为例,整体的业务简述为,当客户进行付款以后,......
  • django版本配置问题,静态文件,orm,orm的使用
    django版本配置问题解决及其他django初始配置静态文件及相关配置静态文件static动态解析static配置请求方法(GETPOST)request对象方法pycharm链......