django基本配置

django基本配置

django小白必会三板斧

django三板斧介绍

 # HttpResponse
		主要用于返回字符串类型的数据
  # render
		主要用于返回html文件 并且支持模板语法(django自己写的)
  # redirect
  	主要用于重定向 括号内可以写其他网站的全称 也可以自己网站的后缀

HttpResponse

# 导入HttpResponse
from django.shortcuts import HttpResponse

# Create your views here.
def index(request):
    return HttpResponse('返回字符类型数据')

render

# 导入render
from django.shortcuts import render

# Create your views here.
def index(request):
    return render(request, 'first.html')  
# 自动去tempaltes文件夹下帮你查找文件

redirect

return redirect('https://baidu.com/')  # 跳转别人网址
return redirect('/home/')  # 重定向 跳转自己的网址 不加ip与端口

# 导入redirect
from django.shortcuts import redirect

# Create your views here.
def index(request):
    return redirect('https://baidu.com/')  

静态文件配置

# 静态文件
css文件、js文件、图片文件、第三方框架文件(bootstrap)
我们默认将所有的静态文件都放在一个static文件夹内

# 静态文件位置
html文件默认都放在templates文件夹下
网站所使用的静态文件默认都放在static文件夹下

'一般情况下我们在static文件夹内还会做进一步的划分处理'
static
   ├─ bootstrap 前端已经写好了的能够直接调用的文件
   ├─  js  写好的js文件
   ├─  css 写好的css文件
   ├─  img 用到的img文件
   └─  其他第三方文件资源

静态文件访问资源不存在

# 静态文件全部显示资源不存在
http://127.0.0.1:8000/static/bootstrap-3.4.1-dist/css/bootstrap.min.css
  '因为我们并没有开设静态资源访问的接口 开设静态资源的访问接口'     

静态文件访问接口固定配置

# 开设静态资源的访问接口
理论上应该自己去路由层开设接口资源 但是由于静态文件资源使用频率很高
  只要是一个web项目都肯定需要 所以django为了避免开发者繁琐 提供了静态资源的配置文件 只需要填写固定的配置即可开设资源接口
   '去settings.py添加配置'
# 静态文件资源访问接口固定配置
STATICFILES_DIRS = [
        os.path.join(BASE_DIR, 'static')
    ]
 # html页面路径
/static/ # 接口的前缀
mycss.css # 后面的就是路径

接口前缀的作用

# /static/bootstrap-3.4.1-dist/css/bootstrap.min.css
/static/是接口前缀 表示具备访问静态文件资源的权限
具备了权限之后会拿着接口前缀后面的文件路径去列表中每个文件夹中查找

# 静态文件配置
STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'static'), 
    #这个static就是真正的静态文件夹路径 
    os.path.join(BASE_DIR,'static1'),
    os.path.join(BASE_DIR,'static2'),
] 
'''
比如 static和static1里面都有a.txt 那么只会拿到static中的
找到一个就结束
'''

接口前缀动态绑定

'''
能够动态实时解析STATIC_URL = 的值数据
方便修改STATIC_URL的接口前缀
'''
# 代码示例:
  {% load static %}
  <link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}">

登录功能

form表单

'页面需要获取前端用户数据并且传递给后端'
# action参数:控制数据的提交地址
1.不写 默认朝当前所在的url(网页地址)提交数据
2.全写 指名道姓 https://www.baidu.com
3.只写后缀 /login/
# method参数:控制请求的提交方式
默认是get请求,可以改成post请求因为有用户敏感信息

# 使用django提交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',
]

'''
在前期我们使用django提交post请求的时候 
需要取配置文件中注释掉一行代码
'''

request对象方法

request.method 
	返回请求方式POST/GET 并且是全大写的字符串形式
    
request.POST  	  结果是一个QueryDict 可以看成字典处理
			获取用户post请求提交的普通数据不包含文件			  	 request.POST.get()  # 只获取列表最后一个元素
request.POST.getlist()  # 获取列表

 
request.GET  # 直接看成是字典即可 
			获取用户提交的get请求数据
request.GET.get()     # 只获取列表最后一个元素
request.GET.getlist()  # 获取列表
  """
      get方法会拿到值列表中最后一个元素  而不是整个列表
      getlist方法会直接拿到整个值列表  
  """

pycharm链接MySQL

"""其实pycharm也可以充当很多数据库软件的客户端"""
# database位置
1.pycharm右上方侧边 database
2.pycharm左下方边角 database
3.上述两个地方都没有 需要下载插件 或者直接重装一个正常的pycharm
	settings
  	plugins
    	搜索database下载apple即可	
'都没有再没有卸载pycharm重新装 '    

# 链接数据库
	1.选择数据库 
  2.首次链接需要下载驱动
  	download driver...
  3.测试链接如果不通过 则需要换驱动重新下载使用
  	Driver:MySQL MySQL for 5.1
 	'''不再过多讲解 课下可自行研究'''

django链接MySQL

"""
django默认自带一个sqlite3数据库 但是功能很少 仅用于本地测试
"""
1.默认配置
	DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}
2.修改配置
	DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # 修改成MySQL数据库
        'NAME': 'lianxi4', # 连接数据库名称 先创建好才能指定
        'HOST': '127.0.0.1',
        'PORT': 3306,
        'USER': 'root',
        'PASSWORD': 'lsq123',
        'CHARSET':'utf8'  # 指定字符编码
    }
}
3.指定模块
	在项目同名的文件夹内的__init__.py
  或者应用名的文件夹内的__init__.py
  添加一行固定的代码
  	import pymysql
		pymysql.install_as_MySQLdb() # pyMySQL取代MySQLDB

Django ORM

ORM简介

"""
ORM:对象关系映射
作用:目的就是为了能够让不懂SQL语句的人通过python面向对象的知识点也能够轻松自如的操作数据库
缺陷:封装程度太高,有时候sql语句的效率偏低,需要自己写SQL语句
"""
类 ---------------->>> 表
对象 --------------->>> 表里面的数据
对象点属性 ---------->>> 字段对应的值

编写代码

# Create your models here.
class Users(models.Model):
    uid = models.AutoField(primary_key=True)   # 等价于uid int primary key auto_increment
    name = models.CharField(max_length=50)  # 等价于name varchar(50)
    pwd = models.IntegerField()   #等价于 pwd int

数据库迁移命令

# 打开terminal输入命令   
python3 manage.py makemigrations  # 记录操作
'将操作记录记录到(migrations文件夹)'
python3 manage.py migrate  # 将操作迁移到数据库

'''只要你修改了models.py中跟数据库相关的代码 就必须重新执行上述的两条命令'''

表名的特征

# 自动加上应用前缀
Users								app01_users
  由于django支持多个应用  为了区分不同应用下可能会出现相同的表名
  所以自动加上了应用的前缀 因为同一个应用下不可能出现相同的表名(只要你是个正常的程序员都不会犯这样的错误)

#表的主键自动添加
	表的主键可以不写 orm会自动帮你写一个名为id的主键

'''针对两个迁移命令 可以采用pycharm提示功能编写
    	tools 
      	run manage.py task'''

数据的操作---增删改查

# 1.增
	user_obj = models.Users.objects.create(name='jack', pwd='123')
  print(user_obj)  # users object
  print(user_obj.uid)  # 2
  print(user_obj.name) # jack
  print(user_obj.pwd)  # 123
# 2.查
	res = models.Users.objects.filter(name='jason')
  print(res)  # <QuerySet [<Users: Users object>]>
  print(res[0])  # Users object
  print(res[0].uid)  # 1
  print(res[0].name)  # jason
  print(res[0].pwd)  # 123
# 3.改
	models.Users.objects.filter(uid=1).update(name='jasonNB')
# 4.删
	models.Users.objects.filter(uid=3).delete()

posted @ 2022-05-11 20:25  洛阳城门听风雨  阅读(128)  评论(0)    收藏  举报