Django的方法
---恢复内容开始---
静态文件的配置:
静态文件:对已经写好过了的文件,我们只是拿过来用,那么这个文件就可以被称为静态文件。
静态文件可以是:
bootstrap一类的框架的的文件
image图片文件夹
css样式文件
js文件夹
在django中所有的静态文件都存放在static文件夹下
一般存放的子文件夹
css文件夹 当前网站的css样式文件
js文件夹 当前网站的js文件
image文件夹 图片文件夹
其 他(前端框架代码 第三方插件代码...
你的静态文件如果要想在django中有效的话,那么必须在settings中配置一下
配置:
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static'),
]
这样你只要输入相应的静态文件的路径就可以有效的使用。
STATIC_URL = '/static/' 这个不是什么文件夹的名字,而是接口前缀
只要你想要访问静态文件,那么就必须要前面都必须是/static打头,这个不是你的静态文件夹的名字,而是接口前缀。后面才是要找寻的路径。
那个配置为什么是列表呢
因为里面可以存放多个路径,这个访问不到访问下一条,都没有会报请求资源不存在。
动态解析接口前缀:
{% load static %} 这个是初步导入接口前缀
<link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}">
<script src="{% static 'bootstrap-3.3.7-dist/js/bootstrap.min.js' %}"></script>
一些注意事项:
一个端口号就启动一个django项目,免得出bug
用户可以访问到的资源放在url中,也就是说url中设定什么资源,用户就可以访问到相应的资源。
FORM表单默认的提交方式是get请求
携带数据的方式是url后面问号跟数据
http://127.0.0.1:8000/login/?username=zekai&password=123
另外请求改成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', ]
form表单提交数据的目的地是由action控制的
1.不填,默认是当前文件所在路径
2.填全路径
3.写后缀
视图函数一般是先处理get请求的
request这个参数是wsgi这个模块帮我们处理的,跟wsgiref模块里面的env很相似,都是请求相关的数据
获取请求的方法就是
request.method
GET:
request.GET获取前端get请求的数据(类似一个大字典)
request.GET.get('name') 这个默认是获取最后的值
request.GET.getlist('hobby') 这个是获取全部
POST:
request.POST是获取前端post请求携带的数据(类似于一个大字典)
request.POST.get('name')这个默认是获取最后的值
request.POST.getlist('hobby') 这个是获取全部
parcharm操作数据库
就是database那个按钮,使用的时候别忘了装插件先
django操作mysql
django默认使用的是自带的splite3数据库,小型数据库。
如果想要使用其他的数据库就要在settings配置文件中重新配置
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'day51', 'HOST':'127.0.0.1', 'PORT':3306, 'USER':'root', 'PASSWORD':'123', }
配置完后还要在项目文件夹或者应用名文件夹下的__init__文件中替换已经不兼容的mysql_db这个
默认连接mysql的。
import pymysql pymysql.install_as_MySQLdb()
django的orm
ORM:对象关系映射
类---------表
对象-----------表中记录
对象的属性---------记录上字段对应的值
首先要在models.py这个文件上写模型表类
class User(models.Model): # 将id字段设置为User表主键字段 在django orm中 你可以不写主键字典 django会默认给你的表创建一个名为id的主键字段 # id = models.AutoField(primary_key=True) # 一旦你自己指定了主键字段 那么django就不会自动再帮你创建了 username = models.CharField(max_length=32) # username varchar(32) CharField必须要指定max_length参数 password = models.IntegerField() # password int
数据库迁移(同步)记录的条指令
python manage.py makemigrations 这个只是将操作记录下来,但并没有同步到数据库中
python manage.py migrate 这个是真正同步到数据库中
注意注意!!!!:
一旦表中字段发生改变就要执行这条指令,一条用于记录操作,一条用于真正同步
表字段的增删改查
增
就是在类中加字段,但要记住,如果表已经建好了,那么再新增字段有2种方式
1.给新增的字段设置默认值
addr = models.CharField(max_length=32,default='China')
2.让新增的字段可以为空
null=True
删(慎用):
就是注释那个字段,然后执行 python manage.py makemigrations 和python manage.py migrate这2条指令
数据的增删改查
查:
先导入models
models.User.objects 这3个参数无论增删改查都是固定的
models.User.objects.all() 这个是查所有=select * from User;
model.User.objects.get(name=name) 这个是获取对象本身,如果不存在则会报错
res = models.User.objects.filter(username=username) 这个获取的是列表套对象,可以通过索引0拿对象,但不建议,建议用first()拿对象,因为里面已经封装好了。
查询出来的queryset对象都有一个query方法可以获取原生的sql语句
增:
1.models.User.objects.create(username=username,password=password)
2.user_obj = models.User(username=username,password=password)
user_obj.save()
删:
models.User.objects.filter(条件).delete()
改
1.models.User.objects.filter(条件).update()
2.user_obj.name=username
user_obj.save()
总结:
用户的增删改查
1.通过orm展示所有到前端
all()
模板语法for循环
2.添加新增按钮
a标签的href直接触发后端逻辑
create()
编辑和删除按钮
利用get请求携带的数据,在url后面跟问号加对应数据的id值,
如果是编辑就重新渲染一个页面,如果是删除直接操作就好。