Django基本知识

Posted 林染

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django基本知识相关的知识,希望对你有一定的参考价值。

一、安装及使用

  • 下载安装

    • 命令行:pip3 install django==1.11.21

    • pycharm

  • 创建项目

    • 命令行:

      • 找一个文件夹存放项目文件,打开终端:

      • django-admin startproject 项目名称

      • 项目目录

      技术图片

    • pycahrm

  • 启动

    • 命令行

      • 切换到项目的根目录下 manage.py

      • python36 manage.py runserver —— 127.0.0.1:80`

      • python36 manage.py runserver 80——127.0.0.1:80

      • python36 manage.py runserver 0.0.0.0:80——0.0.0.0:80

    • pycharm:点绿三角启动 可配置

  • 简单使用

    • 示例:返回html指定文件

    # 在urls.py中
    # 导入
    from django.shortcuts import HttpResponse,render
    ?
    # 函数
    def index(request):
        # return HttpResponse(‘index‘)
        return render(request,index.html)
    ?
    # url和函数对应关系
    urlpatterns = [
        url(r^admin/, admin.site.urls),
        url(r^index/, index),
    ] 

二、静态文件

  • 配置

    • 在settings.py中设置

    STATIC_URL = /static/          # 别名
    STATICFILES_DIRS = [            # 设置文件路径,可以设置多个
        os.path.join(BASE_DIR, static1),
        os.path.join(BASE_DIR, static),
        os.path.join(BASE_DIR, static2),
    ]  
  • 使用

    • 在路径前添加别名:/static/

    • 多个文件路径,也是使用同一个别名,不是文件名

    • 如果别名后的路径名相同,按照STATICFILES_DIRS列表的顺序进行查找

    <link rel="stylesheet" href="/static/css/login.css">         {# 别名开头 #} 

三、简单的登录实例

  • form表单提交数据注意的问题:

    • 提交的地址:action="",请求的方式:method="post"

    • 所有的input框有name属性,如name="username"

    • 有一个input框的type="submit"或者有一个button

  • 提交post请求,由于Django中有一个csrf校验,所有请求会出问题

    • 解决方式:把settings中MIDDLEWARE的‘django.middleware.csrf.CsrfViewMiddleware‘注释掉

  • 重定向

    • 导入:from django.shortcuts import redirect

    • 使用方式

    # 在函数中使用,例如
    return redirect(/index/)      # 参数:路径url
    # 注意:前面必须加/,代表从url根拼接,否则就会在当前url后面一直拼接
    技术图片
    from django.shortcuts import HttpResponse, render, redirect
    ?
    def index(request):
        # return HttpResponse(‘index‘)
        return render(request, index.html)
    ?
    def login(request):
        if request.method == POST:
            # 获取form表单提交的书籍
            username = request.POST[username]
            password = request.POST[password]
            # 验证用户名和密码
            if models.User.objects.filter(username=username,password=password):
                # 验证成功跳转到index页面
                # return redirect(‘https://www.baidu.com/‘)
                return redirect(/index/)
            # 不成功 重新登录
        return render(request, login.html)
    ?
    urlpatterns = [
        url(r^admin/, admin.site.urls),
        url(r^index/, views.index),
        url(r^login/, views.login),
    ]
    示例

四、app

  • 创建app

    • 命令行:python manage.py startapp app名称

    • pycharm:tools --> run manage.py task --> 输入命令:startapp app名称

  • 注册app

    • 在settings.py中设置,例:app名为app01

    INSTALLED_APPS = [
        ...
        app01,
        app01.apps.App01Config,       # 推荐写法
  • app中的文件

    • migrations:存放迁移文件的

    • admin.py:Django提供的后台管理工具

    • app.py:与app信息相关的

    • models.py:跟ORM有关的内容

    • views.py:视图,写函数的

五、使用mysql流程

  • 创建一个MySQL数据库:create database day53;

  • 在settings.py中设置,Django连接MySQL数据库:

    DATABASES = {
        default: {
            ENGINE: django.db.backends.mysql,      # 引擎 
            NAME: day53,                         # 数据库名称
            HOST: 127.0.0.1,                     # ip地址
            PORT:3306,                            # 端口
            USER:root,                          # 用户
            PASSWORD:123                        # 密码
        }
    }
  • 在与settings,py同级目录下的init文件中写入:

    import pymysql
    pymysql.install_as_MySQLdb()
  • 创建表(在app下的models.py中写类):

    from django.db import models
    ?
    class User(models.Model):
        username = models.CharField(max_length=32)       # username varchar(32)
        password = models.CharField(max_length=32)       # username varchar(32)
  • 执行数据库迁移的命令:

    • python manage.py makemigrations:检测每个注册app下的model.py,记录model的变更记录

    • python manage.py migrate:同步变更记录到数据库中

六、MVC和MTV

  • MVC

    • M: model 模型 —— 和数据库打交道

    • V:view 视图 —— HTML

    • C: controller 控制器 —— 调度 传递指令 业务逻辑

  • MTV:

    • M: model 模型 ORM —— 和数据库打交道

    • T: tempalte 模板 —— HTML

    • V:view 视图 —— 函数 业务逻辑

  • djando是MTV模式

以上是关于Django基本知识的主要内容,如果未能解决你的问题,请参考以下文章

django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段

django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段

Django rest_framewok框架的基本组件

Django REST框架--认证和权限

如何在 Django 中显式重置模板片段缓存?

使用 Django 模板作为片段