Loading

初识django框架(二)

静态文件

什么是静态文件?

  • 静态文件: 写好的文件不会动态变化的文件资源,比如css文件,js文件,图片文件,第三方框架等等
  • 墨守成规的将这些文件放在自创的static文件夹中,在金太文件夹中创建css、js、img、others文件夹

配置静态文件,拿第三方框架bootstrap来举例子,如果用到静态文件,需要settings.py中配置,配置好的bootstrap的绝对路径只从根目录写就OK了

'''settings.py'''
import os
STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'static')
]


'''urls.py'''
from app03 import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('login/',views.login)
]


'''views.py'''
def login(request):
    return render(request, 'static/login.html')
	
	
'''login.html'''
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link href="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
    <div class="container">
        <div class="row">
            <h1 class="text-center">用户登录</h1>
            <div class="col-md-8 col-lg-offset-2">
                <form action="">
                    <div class="form-group">
                        <label for="exampleInputEmail">Email address</label>
                        <input type="email" class="form-control" id="exampleInputEmail" placeholder="Email">
                    </div>
                    <div class="form-group">
                        <label for="exampleInputPassword1">Password</label>
                        <input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
                    </div>
                    <button type="submit" class="btn btn-primary btn-block">Submit</button>
                </form>

            </div>
        </div>
    </div>
</body>
</html>

ps: 配置静态文件完成后,那么在static文件下都可以通过路径来访问到,例如:127.0.0.1:8000/static/a.txt
image

静态文件配置及访问顺序

静态文件

import os
STATIC_URL = '/static/'  # 接口前缀,不是文件名,类似于'令牌'
'''
如果想要访问静态文件资源必须以static开头,如果韩国写了接口前缀之后,下面的静态配置文件下的文件都可以访问
'''
# 静态文件配置,可以写多个,访问的顺序是从上往下依次查找
STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'static'),
    os.path.join(BASE_DIR,'static1'),
    os.path.join(BASE_DIR,'static2')
]

动态解析
涉及到接口前缀的修改繁琐的问题,那么现在使用动态解析的语法来实现,修改了接口前缀也能够动态解析,从而不需要挨个文件的修改

<!--静态配置-->
<script src="/static/JS/bootstrap.min.js"></script>
<script src="/static/JS/jQuery3.6.js"></script>

<!--上下对比-->

<!--动态解析配置-->
{% load static%}
    <link rel="stylesheet" href="{% static '\CSS\bootstrap.min.css' %}">
    <script src="{% static '\JS\bootstrap.min.js' %}"></script>

image

request对象方法

提交表单出现403错误,如何解决?
image

settings.py文件注释掉'django.middleware.csrf.CsrfViewMiddleware

request方法

  • request.method: 获取当前请求方式
  • request.body: 以二进制的形式返回用户提交的数据
  • request.POST: 以字典的形式返回用户提交的数据
from django.shortcuts import render,HttpResponse,redirect

# Create your views here.


def login(request):
    print(request.method,type(request.method))  # GET <class 'str'>
	print(request.POST)
    if request.method == 'POST':
        return HttpResponse('post请求返回结果')
    return render(request, 'static/login.html')  # GET请求返回页面

如何获得URL?后面的参数?

request.GET方法: 和request.POST方法是一样的,返回一个字典
request.GET.get(k): 获取字典中的value,返回字符串
request.GET.getlist: 获取用户数据,获取到整个列表

文件对象如何获取?

针对表单提交的文件对象,如何获取?这里不能使用request.POST或者request.GET方法,使用request.FILES方法,返回结果来看是一个字典

  • 获取表单提交文件对象方法: request.FILES

方法有了,返回的是一个字典,在表单中添加enctype参数,再提交就可以获取到文件对象

django连接MySQL

django默认连接的是sqlite,这里介绍如何连接MySQL数据库

# 1.修改配置文件
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

-------------------------------------------
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '数据库',
        'HOST':'ip地址',
        'PORT':3306,
        'USER':'用户名',
        'PASSWORD':'密码',
        'CHARSET':'utf8'
    }
}
# 数据库使用是提前创好的!!!

# 2.在项目文件夹或应用文件夹的__init__.py文件中书写固定代码
'''__init__.py'''
import pymysql
pymysql.install_as_MySQLdb()

image

posted @ 2022-03-19 18:45  木子乐乐  阅读(14)  评论(0)    收藏  举报