一:静态文件配置
1.什么是静态文件?
- 1.第三方框架
- 2.css文件
- 3.js文件
- 4.图片文件
2.django项目中在哪里存放静态文件?
- 在项目中创建static(名字必须是static)文件夹,在文件夹中可以按照不同的文件类型再分文件夹 (css,js,img,others)管理文件
3.静态文件如何导入?
1.静态文件资源配置:先到配置文件中把static文件添加到项目的sys.path根目录下
# 接口前缀
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
2.到html文件中导入静态文件
<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>
{% load static %}
<link rel="stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.min.css' %}">
二:请求方式
1.GET请求
特点:
- 1.朝别人索要数据
- 2.可以携带额外的无关紧要,大小不超过4KB的数据 (例如:url?x=111&y=222)
- 3.没有请求体
2.POST请求
特点:
- 1.朝别人提交数据
- 2.可以携带额外数据,兵且数据都放在请求体中,数据大小没有限制
3.form表单中的数据请求
1.form表单默认的数据请求方式是get
2.action 数据提交的地址
- 1.不写时:朝当前页面所在地址提交数据
- 2.写后缀:/index/ 会自动补全ip和port
- 3.写网址的全称:https://www.baidu.com
三:request对象方法
1.获取请求方式:request.mothod
2.POST
- 1.request.POST 获取POST请求发送来的普通数据(不包含文件)
- 2.request.POST.get() 默认只获取列表中的最后一个数据值
- 3.request.POST.getlist() 获取键对应的整个列表
3.GET
- 1.request.GET 获取url后面携带的非敏感数据
- 2.request.GET.get() 默认只获取列表中的最后一个数据值
- 3.requeat.GET.getlist() 获取键对应的整个列表
四:pycharm连接数据库
1.步骤:
- 1.找到database按钮,点击进入
- 2.找到要连接的数据库,输入用户名,密码,想要连接的数据库名
- 3.测试连接,如果测试成功的话,点击apply,再点击确认按钮即可
2.简单的数据的增删改查
- 直接在pycharm中打开表,在表中通过点点点的方式对数据进行操作
五:django连接MySQL
1.配置数据库
DATABASES = {
'default': {'ENGINE': 'django.db.backends.mysql',
'NAME': 'dj02',
'USER': 'root',
'PASSWORD': 'xxx',
'HOST':'127.0.0.1',
'PORT': 3306,
'CHARSET': 'utf8'
}
}
- 2.第二步:指定MySQL的模块
- django1.11 版本需要在项目或者应用目录下的__ init __.py 导入模块pymysql
import pymysql
pymysql.install_as_MySQLdb()
- django2.2 及以上版本只需要使用mysqlclient模块即可
六:初识ORM
1.什么是ORM?
类 映射成 表
对象 映射成 记录
对象点属性 映射成 字段对应的值
2.用ORM编写模型类
class User(model.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=32)
pwd = models.IntegerField()
注意:主键id也可以不用自己写,ORM会自动帮我面创建一个主键id字段
3.数据库的迁移命令(打死都要给我记住)
- 1.python38 manage.py makemigrations
- 2.python38 manage.py migrate
- 3.上述两天命令也可以在pycham中的Tool中简写成:
- makemigrations 要改动的app(不写的话,默认所有的app被执行)
- migtate 要改动的app
4.ORM语法(增删改查)
models.User.objects.filter()
models.User.objects.create()
models.User.objects.filter(id=1).update(name='ming')
models.User.objests.filter(id=3).delete()
5.ORM关联外键字段
detial = models.OneToOneField(to='AuthorDetail', on_delete=models.CASCADE)
publish = models.ForeignKey(to='Publish',on_delete=models.CASCADE)
- 1.多对多
- 外键字段写在任意一张表中,ORM会自动帮你创建第三张表
authors = models.ManyToManyField(to='Ahthors')
作业:
1.路由层代码
from django.contrib import admin
from django.urls import path,re_path
from app01 import views
urlpatterns = [
path('admin/', admin.site.urls),
path('home/', views.home),
path('insert/', views.insert),
re_path('update/(\d+)/', views.update, name='update'),
re_path(r'^delete/(\d+)/', views.delete, name='delete'),
]
2.视图层代码
from django.shortcuts import render,redirect
from app01 import models
def home(request):
data = models.Student.objects.all()
return render(request, 'home.html', locals())
def insert(request):
if request.method == 'POST':
name = request.POST.get('name')
age = request.POST.get('age')
hobby = request.POST.get('hobby')
models.Student.objects.create(name=name, age=age, hobby=hobby)
return redirect('/home/')
return render(request, 'insert.html')
def update(request, stu_id):
if request.method == 'POST':
name = request.POST.get('name')
age = request.POST.get('age')
hobby = request.POST.get('hobby')
models.Student.objects.filter(pk=stu_id).update(name=name, age=age, hobby=hobby)
return redirect('/home/')
stu_obj = models.Student.objects.filter(pk=stu_id).first()
return render(request, 'update.html', locals())
def delete(request, delete_id):
models.Student.objects.filter(pk=delete_id).delete()
return redirect('/home/')
3.最终效果
|