第四章 Django中各文件的设置

django处理请求流程

  1. 浏览器地址输入url,发送get请求

  2. wsgi服务器接受到请求

  3. 根据url路径找到对应的函数

  4. 执行函数,返回响应给wsgi按照http协议格式返回浏览器

1. 静态文件

  • 静态文件包括:css,javascript,images

1.1 静态文件配置流程

  • 配置

# 配置静态文件夹路径
STATIC_URL=‘/staic/‘
STATICFILES_DIRS=[
  os.path.join(BASE_DIR, ‘static‘),
  os.path.join(BASE_DIR, ‘static1‘),
  os.path.join(BASE_DIR, ‘static2‘),
]

# 创建一个static文件夹,存放静态文件
css,js和img文件夹,plugins文件夹
# static是STATIC_URL=‘/staic/‘中的static
<link rel=‘stylesheet‘ href=‘/static/css/xxx.css‘></link>

1.2 简单使用

1. form中的元素(5)

  • 可以建立多个static文件夹

  • 如果静态资源有重名的文件,则按照静态文件夹路径中的列表顺序(一旦找到即停止)

  1. input中可以使用autofocus,即请求页面自动聚焦

  2. form表单提交使用:action和method=‘post‘

  3. 所有的input框需要name属性,使用sumbit或button

  4. 提交post请求,把settings中的MIDDLEWARE:csrfvirew注释掉即可,即禁用csrf校验

  5. 下拉框中的option选项,可以通过name获得指定的value值,option后的内容只是给用户展示

2. 提交表单中的方法

  1. 获取请求方式:request.method(GET/POST)

  2. form表单中的数据:request.POST querydict对像,可以使用dict方式取值,可以使用get方法

  3. 导入django中的redirect

  4. /index/第一个/是根目录,如果没有根目录,则进行路径拼接.

    • 响应头:Location。/index/

# 在view.py文件中处理请求数据,如认证操作
def login(request):
    if request.method == ‘POST‘:
          # 获取用户名和密码,form表单中数据
        username = request.POST[‘username‘]
        # username = request.POST.get(‘username‘, ‘用户不存在‘)
        pwd = request.POST[‘pwd‘]
     # 重定向,返回一个网址,或当前网站资源的路径
     return redirect(‘/index/‘)

3. get和post

  • get

    1. 获取数据,传递参数(在url中)

    2. 提交数据暴露在url中

    3. django获取参数

      • request.GET.get(‘username‘)

  • post

    1. 数据是隐藏的(在请求体中)

    2. request.POST

2. app

  • 把功能进行划分

2.1 命令行

1. 创建app

python manage.py startapp app1
# 放置迁移文件
migrations
# django提供后台管理,对数据库表结构进行增删改查
admin.py
# 和ORM相关
models.py
# 测试文件
test.py
# 视图,函数位置
views.py

2. 注册app

# 在settings中的installed_apps
直接添加app名称
# 推荐使用,执行类
或app01.apps.App01Config

2.2 pycharm

  • 创建Django项目时,可以添加app(和templates一同),pycharm创建并注册

# 创建
tools --> runmanage.py task --> 
startapp app02(名称)
# 注册,修改settings中的INSTALLED_APPS
INSTALLED_APPS = [
    ...
    ‘app01‘,
    ‘app01.apps.App01Config‘,  # 推荐写法
]
# 重复注册会报错

2.3 注意事项

  1. app更名需要同步到数据库中

  2. 有关app名称里面的模块导入时,也需要更改为响应的app名称

相关推荐