首页 > 其他 > 详细

Django

时间:2019-11-23 17:00:44      阅读:95      评论:0      收藏:0      [点我收藏+]

Django

Django项目是一个python定制框架,采用了MVT的框架模式,即模型M,视图V和模板T

Django项目的创建

  1. 命令行式

    #1.cmd
    >>django-admin startproject project_name
    
    #2.切换到项目文件夹下
    #>>python2 manage.py runserver 127.0.0.1:8000(可指定ip地址)
    >>python3 manage.py runserver
    
    #3.创建应用(django支持多应用开发)
    >>python3 manage.py startapp app_name
    '''
    注意:
    1.不会自动创建templates文件夹
    2.配置文件中不会自动书写templates文件路径
    '''

    Django中的app

    Django是一个以开发app为主要功能的web框架

    一个app是一套Django功能的集合,通常包括模型和视图,按python的包结构的方式存在

    Django为app提供了前期的环境配置

    *创建好的app需要在Django配置文件中注册方可生效

    Django框架的分层

    Django框架就是为了开发app,而app的工作过程本质就是根据不同的请求返回不同的数据

    Django框架将工作过程分为四层:

    1. 路由层 urls.py 根据不同的地址执行不同的视图函数u
    2. 视图层 views.py 定义处理业务逻辑的视图函数
    3. 模型层 models.py 和数据库交互
    4. 模板层 templates.py 存储返回给浏览器的html文件

    请求生命周期

    技术分享图片

    Django文件功能

    Django项目名(根目录)

    项目同名的文件夹

    settings.py 暴露给用户可以配置的配置文件

    urls.py 路由和视图函数的对应关系

    manage.py

    Django的入口文件

    应用名文件夹

    migrations文件夹 所有数据库的相关操作记录

    admin.py Django-admin后台管理

    apps.py 注册app使用

    models.py 存放数据库所有有关的模型类

    tests.py 测试文件

    views.py 处理业务逻辑的视图函数

基本操作

#HttpRespnonse  返回字符串
def httpresp(request):
    return HttpRespnonse('这是一个字符串')


#render     返回html文件,可以给html页面传值
def ren(request):
    user_dic = {'username':'slk'}
    return render(request,'login.html',{'user_info':user_dic})


#redirect  重定向,可以是本网站的路径后缀,也可以是全路径
def home(request):
    return redirect('https://baidu,com')
    retur redirect('/add_user/')  #如果是本网站路径后缀要加斜杠

注意事项

前期配置相关

  • 静态文件配置

    1. 默认情况下,所有的html文件都是放在templates文件夹内

    2. 静态文件是指网站所用到的提前写好的css、js、第三方的前端模块以及图片等静态资源

    3. 默认情况下,网站所用到的静态文件资源全部放在static文件夹(需要手动创建)下,static文件夹下可以在细分css文件夹、js文件夹、font文件夹、img文件夹、Bootstrap文件夹以及fontawesome文件夹等

    4. 路径配置

      STATIC_URL = '/static/'
      
      STATICFILES_DIRS = [
          os.path.join(BASE_DIR, 'static')
      ]
    5. 静态文件夹的动态绑定

      #在html的py文件中
      {% load static %}
      <link rel="stylesheet" href="{% static 'css文件相对路径' %}">
      <script src="{% static 'js文件相对路径' %}"></script>
  • 前期在向后端提交post请求出现403,需要在配置文件中注释一行内容

    # 中间件
    MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    ]
  • 连接数据库

    #配置文件
    DATABASES = {
        'default': {
        'ENGINE': 'django.db.backends.mysql',  # 指定数据库类型
        'NAME': 'day49',  # 指定库的名字
        'USER':'root',  # 注意 键必须是全大写
        'PASSWORD':'123qwe',
        'HOST':'127.0.0.1',
        'PORT':3306,
        'CHARSET':'utf8'
        }
    }
    
    #更改连接模块
    #在项目名下的__init__.py 或 应用名下的__init__.py 中
    import pymysql
    pymysql.install_as_MySQLdb()
  • orm 对象关系映射 缺点:封装程度太高,效率偏低;一个项目对应一个数据库

models相关

  • 数据库中已有记录,要新建字段

    1. 设置默认值,default=xxx
    2. 允许控制,null=True
    3. 根据报错提示,给默认值
  • CharField字段,必须要有max_length属性

  • 与数据库结构相关的修改,必须要有数据库迁移命令

    >>python manage.py makemigrations
    >>python manage.py migrate
  • 默认帮你定义了id(主键),自定义的是主键AutoField()

views相关

  • 获取请求方式

    type_of_request = request.method(都是大写)
  • 获取请求数据

    #如果是a标签中href中携带的数据也用GET
    #当请求方式是GET时,一般使用render返回页面
    name = request.GET.get('name')
    
    #当请求方式时POST时,一般使用redirect重定向一个页面
    name = request.POST.get('name')
  • 数据库操作

    #增
    new_obj = models.ClassName.objects.create(key=value)
    
    #删    根据filter查询的结果批量操作
    models.ClassName.objects.filter(key=valus).delete()
    
    #改 根据filter查询结果批量操作
    models.ClassName.objects.filter(key=value).update(key=value)
    
    #查
    obj_list = models.ClassName.objects.filter(key=value)
    obj = obj_list.first()
    
    all_obj_list = models.ClassName.objects.all()
    #等价于
    all_obj_list = models.ClassName.objects.filter()

其他

  • django是默认重启的,内有检测机制,实时检测所有文件的变化

  • form表单默认请求方式是get请求,也能携带极小量的数据而且不安全

    <a href="http://127.0.0.1:8000/login/?username=jason&password=jason123"></a>

Django

原文:https://www.cnblogs.com/shenblog/p/11918418.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!