首页 > 数据库 >静态文件相关配置、request请求方法、pycharm连接MySQL、orm

静态文件相关配置、request请求方法、pycharm连接MySQL、orm

时间:2022-12-11 21:01:31浏览次数:50  
标签:name models request django orm pycharm POST 数据

静态文件相关配置、request请求方法、pycharm连接MySQL、orm

image

风得意马蹄疾,一日看尽长安花

一、静态文件相关配置

1.编写一个登录功能

1.创建一个django项目并创建一个app
2.在urls中添加一组对应关系
3.在app的views中写核心逻辑代码
4.三板斧进行交互

image

image

创建jdango中app的流程

2.静态文件资源

静态文件:html页面上不经常修改的资源
1.css文件
  存放所有的css文件
2.js文件
  存放所有的js文件
3.img文件
  存放所有的图片文件 
4.第三方插件文件
  存放所有的第三方插件文件
djiango针对静态文件资源我们一般放在static文件夹内
该目录如果需要单独开始一个个目录统一的存放,可以创建相应的文件夹存放静态文件资源
static目录
    css目录
    js目录
    img目录
    utils目录/plugins目录/libs目录/others目录/不创建第三方插件
为什么在浏览器窗口找不到我们所引入的bootstrap的css和js文件?
   我们在访问django框架资源的时候,是我们提前在urls.py里面进行配置了的,设置了相应的接口的,所以我们找不到就是没有开设相应的接口
所以我们在配置前端的静态文件以后还要配置相应的接口,没有相应的接口我们是访问不到相应资源的,
在setting文件中也设置了静态文件的接口

image

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.2/howto/static-files/

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'static'),
]
动态解析解决问题
很多html文件都需要用到一些源码,然后改前缀的话,在一些页面里面就失效,对这样的情况我们可以这样做:
     {#     模板语法#}
    {%  load static %}
    <link rel="stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.min.css' %}">
    <script src="{% static 'bootstrap-3.4.1-dist/js/bootstrap.min.js' %}"></script>  

image

3.资源访问

我们在地址栏中之所以可以属于路由获取到相应的资源是因为程序员提前开设了资源的接口

二、request请求方法

1.form表单默认的数据提交方式是GET

method = 'get'
action   控制数据提交的地址
1.action = ''                        数据默认提交给当前所在的地址
2.action = 'https://www.baidu.com'   提交完整的地址
3.action = '/index'                  朝当前服务端的index地址提交

2.GET请求

朝服务端索要数据,也可以携带额外的数据,在url后面跟上携带的数据
    url?xxx=yyy&zzz=ppp
携带数据的限制:
    1.数据只能是一些无关紧要的非敏感性数据
    2.数据大小有限制  2kb-4kb之间
GET请求没有请求体(HTTP数据格式)

3.POST请求

朝服务端提交数据,也可以携带额外的数据,额外携带的数据的方式是放在请求体中,并且数据大小没有限制

4.在请求配置post请求前期需要去配置文件中注释一行代码

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',
]

5.request对象

from django.shortcuts import render,HttpResponse,redirect
from app01 import models

# Create your views here.
def login_func(request):
    '''
    如果是get请求就返回一个HTML页面
    如果是post请求就想办法获取发送过来的数据
    :param request:
    :return:
    '''
    print(request.GET)  # 获取URL问号后面携带的数据
    print(request.method)  # GET POST  获取请求方式 结果是纯大写的字符串
    if request.method == 'GET':
        # 1.返回html页面
        return render(request, 'login_page.html')
    elif request.method == 'POST':
        # 获取post请求请求体里面的数据
        print(request.POST)  # <QueryDict: {'name': ['jason'], 'pwd': ['123']}>
        name = request.POST.get('name')  # 获取值列表中最后一个数据值
        pwd = request.POST.get('pwd')
        print(name, type(name), pwd, type(pwd))
        name1 = request.POST.getlist('name')
        print(name1, type(name1))
        return HttpResponse("数据我收到了")
request.method     获取请求方式,结果是纯大写的字符串数据
      GET/POST
request.POST       获取post请求请求体里面携带的数据
       request.POST.get()      获取列表最后一个数据值
       request.POST.getlist()      获取整个列表数据
request.GET        获取网址问号后面携带的数据
       request.GET.get()        获取列表最后一个数据值
       request.GET.getliat()     获取整个列表数据
        
'''
在视图函数中针对不同的请求代码编写套路
if request.method == 'POST':
		return HttpResponse()
	return HttpResponse()
'''

三、pycharm连接数据库

### 1.查找pycharm提供的database按钮
右侧边栏或者左下角有一个数据据的小图标

image

如果没有的话就去下载
Files--->settings--->plugins,然后搜索Database Tools and sql

image

image

下载安装驱动

image

连接已有的数据库

image

添加新的数据

image

一些常用的功能

image

django链接MySQL

django默认使用的是sqlite3 但是这款数据库一般只用于本地测试 功能较少
1.配置文件中修改配置
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 指定数据库软件名称
        'NAME': 'day55',  # 指定库名
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': '127.0.0.1',
        'PORT': 3306,
        'CHARSET': 'utf8'
    }
}
2.报错处理
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?
    在__init__.py中添加下面俩句话
        import pymysql
        pymysql.install_as_MySQLdb()

 django1.X版本需要在项目目录下或者app目录下的__init__.py编写代码
    	import pymysql
    	pymysql.install_as_MySQLdb()
	django2.X及以上都可以直接通过下载mysqlclient模块解决
    	pip3.8 install mysqlclient
	ps:该模块windows下载问题不大 主要是mac电脑可能有问题
3.指定链接MySQL的模块
django1.11 版本需要在项目或者应用目录下的__init__.py中编写一行代码
    import pymysql
    pymysql.install_as_MySQLdb()
django2.2 以上版本需要使用mysqlclient模块,不需要在__init.py文件中添加那俩句代码

image

四、orm

ORM:对象关系映射
	能够让不会SQL语句的python程序员 使用python面向对象的语法来操作数据库
	
类		    映射成			    表
对象		   映射成			   一条条数据
对象点名字	 映射成		     数据获取字段对应的值

ORM由于高度封装了SQL 所以有时候效率较低 我们需要自己写SQL

image

ORM基本操作

1.现在models.py中编写模型类
class GirlsInfo(models.Model):
    # id int primary key auto_increment
    # 字段名 = 字段类型 + 约束条件
    id = models.AutoField(primary_key=True)
    # name varchar(32)
    name = models.CharField(max_length=32)
    # age int
    age = models.IntegerField()
2.执行数据库迁移相关命令
	python38 manage.py makemigrations  将操作记录到小本本上(migrations)
	python38 manage.py migrate		  将操作同步到数据库上

image

image

ORM基础语句

from app01 import models
models.类名.objects.create()
models.类名.objects.filter()
models.类名.objects.update()
models.类名.objects.delete() 
    # 1.创建数据
         models.GirlsInfo.objects.create(name=name,age=pwd)
    #     # 2.查询数据
         res = models.GirlsInfo.objects.filter(name=name)
         print(res)  # [数据对象,]   queryset
         print(res[0])
         print(res[0].id)
         print(res[0].name)
         print(res[0].age)
    #     # 3.修改数据
         models.GirlsInfo.objects.filter(id=1).update(name='jason',age=123)
    #     # 4.删除数据
        models.GirlsInfo.objects.filter(id=1).delete()

标签:name,models,request,django,orm,pycharm,POST,数据
From: https://www.cnblogs.com/zx0524/p/16974428.html

相关文章

  • Github全面详解-12 Pull Request
    PullRequest用于提出对项目文件的更改。它是一个开始提交讨论的方式,被经常用于代码审查。如果你是一个人工作,你可以使用我们学到的git命令来推送更改到主分支中,就足以满......
  • php里ezpdo orm框架初探
      java里有hibernate,php里有啥,这一直困绕着大家.最近发现了一个还可以的php的orm框架ezpdo,网站是​​​http://www.ezpdo.net​​​,有手册......
  • WinForm(六)组合布局属性
    WinForm是基于控件的,不像code+mark的架构,可以非常灵活的用mark来布局,它只能用控件布局属性和窗口控件来完成对UI的布局。容器控件有一组控件叫容器控件,对布局特别有作......
  • WinForm(六)组合布局属性
    WinForm是基于控件的,不像code+mark的架构,可以非常灵活的用mark来布局,它只能用控件布局属性和窗口控件来完成对UI的布局。容器控件有一组控件叫容器控件,对布局特别有作用......
  • Ubuntu20.04安装python3-pip后安装sqlalchemy报错AttributeError: module 'platform'
    解决方法如下:1.首先卸载已经安装python3-pipsudoaptremovepython3-pip2.安装python3.8-pipsudopython3.8-measy_installpip3.安装sqlalchemywang@wang:~$sudopip3.......
  • WinForm(六)组合布局属性
    WinForm是基于控件的,不像code+mark的架构,可以非常灵活的用mark来布局,它只能用控件布局属性和窗口控件来完成对UI的布局。容器控件有一组控件叫容器控件,对布局特别有作......
  • WinForm(五)控件和它的成员
    窗体无疑是WinForm的主角,每个窗体都是用一个class来承载,那么窗体的控件,就是类中的私有字段了。每个窗体有三个文件,两个.cs文件,是一个分部类,Designer.cs是自动生成的C#......
  • WinForm(五)控件和它的成员
    窗体无疑是WinForm的主角,每个窗体都是用一个class来承载,那么窗体的控件,就是类中的私有字段了。每个窗体有三个文件,两个.cs文件,是一个分部类,Designer.cs是自动生成的C#代......
  • WinForm(四)一种实现登录的方式
    首先声明,这只是一种登录方式,并不是最好的方式,用这个例子为了说明登录窗体和Application的关系。在登录前,定义了用户实体,然后是一个通用的类,存放进程中当前登录的......
  • WinForm(五)控件和它的成员
    窗体无疑是WinForm的主角,每个窗体都是用一个class来承载,那么窗体的控件,就是类中的私有字段了。每个窗体有三个文件,两个.cs文件,是一个分部类,Designer.cs是自动生成的C#......