• 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模式

  • 相关阅读:
    利用qq设置个性化的域名邮箱
    中小企业为什么要上HR系统
    JAVA设计模式之:命令模式
    hdoj 1251 统计难题 【字典树】
    哈希表(散列)HashTable实现
    HDU 1711 Number Sequence(字符串匹配)
    回溯法之求n个集合的幂集
    微软Azure云计算服务主导全球
    jQuery选择器
    MyEclipse激活步骤
  • 原文地址:https://www.cnblogs.com/zengyi1995/p/11328946.html
Copyright © 2020-2023  润新知