• Django 基础


    Django

    1.介绍:

    Python的WEB框架有Django、Tornado、Flask 等多种,Django相较与其他WEB框架其优势为:大而全,
    框架本身集成了ORM、模型绑定、模板引擎、缓存、Session等诸多功能。

    2.常用命令:

    1.创建django项目: django-admin startproject sitename 可以用pycharm自动创建
    2.创建一个app python manage.py startapp appname 3.启动并绑定端口 python manage.py runserver 0.0.0.0 8001 4.根据模式创建数据库 python manage.py makemigrations python manage.py migrate --根据数据库创建模式文件 python manage.py inspectdb <db_name> 5.同步数据库 python manage.py syncdb 6.创建后台超级用户 python manage.py createsuperuser

      

    3.基本框架(MTV框架)

    配置文件: settings.py 路由文件:
    urls.py

    数据库操作(M):
    models.py

    前端模板(T):
    Templates--目录

    数据处理/渲染(V):
    views.py

    4.Django 路由:

    url请求 与 view的匹配对应关系
    由 urls.py 进行匹配

    1.基本匹配 path
    path('home/', views.home)
    path('articles/<int:year>/', views.year_archive),
    path('articles/<int:year>/<int:month>/', views.month_archive),

    2.通配符配置 re_path
    re_path('news/(?P<nid>1[0-9]+)/(?P<name>[a-zA-Z]+)', views.news),
    re_path(r'pages/(?:page-(?P<page>d+)/)?$', views.pages)

    3.多级匹配 include
    path('community/', include('aggregator.urls'))
    将以community开头的url之后的内容送到aggregator(app名称)下的urls进行匹配


    文档:https://docs.djangoproject.com/en/2.0/topics/http/urls/

    5.Django orm(重要 重要 重要)

    *两种方式 code优先 与 sql优先
    Django的orm是code优先

    1.settings中配置数据库连接:
    mysql:
    'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'django',
    'USER': 'root',
    'PASSWORD': 'qwe123',
    'HOST': '127.0.0.1',
    'PORT': '3306',
    }
    
    1.在models.py中添加定义表定义
    class Musician(models.Model):
    id = models.IntegerField()
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    instrument = models.CharField(max_length=100)
    **可以根据现有表结构生成 models文件
    python manage.py inspectdb
    
    
    2.在站点的admin.py
    admin.site.register(models.Server) 
    admin.site.register(models.Musician)


    3.执行命令
    python manage.py makemigrations
    python manage.py migrate




    4.基本数据库操作:

    增:
    方式1:
    models.Musician.objects.create(first_name='hu', last_name=name, instrument='1234aaa')
    
    方式2:
    data = {'first_name': 'hu', 'last_name': name, 'instrument': '1234aaa'}
    models.Musician.objects.create(**data)
    删:
    models.Musician.objects.filter(last_name=name).delete()
    
    改
    models.Musician.objects.all().update(first_name=name)
    models.Musician.objects.filter(last_name=name).update(first_name=name)
    查:
    models.Musician.objects.all()
    models.Musician.objects.filter(last_name=name)
    models.Musician.objects.filter(last_name=name).first()
    
    在admin管理界面管理数据库
    在站点的admin.py下面添加models信息
    from 站点名 import models
    admin.site.register(models.Server) 
    admin.site.register(models.Musician)

    6.模板(重要 重要 重要)

    https://docs.djangoproject.com/en/2.0/ref/templates/language/
    https://docs.djangoproject.com/en/2.0/ref/templates/builtins/
    https://docs.djangoproject.com/en/2.0/ref/contrib/humanize/

    1.模板添加 设置
    jquery 和 js文件需要保存到static文件夹, 并被程序调用。
    需要再setting文件中添加参数:
    STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)
    2.模板渲染
    常用命令:
    单个变量:
    <h1>My name is {{ name }}</h1>
    列表:
    <h2>My first_name is {{ dic.0 }},my last_name is {{ dic.1 }}</h2>
    字典
    <h2>My father is {{ family.father }},my last_name is {{ family.mother }}</h2>
    列表循环:
    {% for item in item_list %}
    {% if forloop.counter|divisibleby:2 %}
    <li style="color: red">{{ item }}</li>
    {% else %}
    <li>{{ item }}</li>
    {% endif %}
    {% endfor %}
    继承
    父文件:
    {% block content %}
    父代码块
    {% endblock %}
    子文件
    {% extends '父文件名' %}
    {% block content %}
    子代码块
    {% endblock %}


    说明:子文件代码块会覆盖 父文件代码块
    继承可以多级继承 并且 孙子可以覆盖爷爷的block块
    引入
    {% include '目标文件名'% }
    将目标文件内容引入现有文件

    3.python渲染语法:

    方法一:
    from django.template.loader import get_template
    from django.template import Context
    template = get_template('myweb1/index.html')
    html = template.render({"name": "huruizhi", "dic": name, "family": f, 'item_list': list})
    return HttpResponse(html)
    方法二:
    from django.shortcuts render_to_response
    return render_to_response('myweb1/index.html', {"name": "huruizhi", "dic": name, "family": f, 'item_list': list})

    7.数据提交方式get和post

    get 一般用于请求数据
    post 一般用于提交数据

    提交数据:
    post方式:
    settings 里面操作

    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',
    ]

    8.settings 中的常用操作

    1.错误调试
    DEBUG = True
    2.django 启动app
    INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'MyWeb1',
    ]
    3.中间件
    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',
    ]

    4.全局url
    ROOT_URLCONF = 'test_Django.urls'

    5.模板配置
    TEMPLATES = [
    {
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    #可以添加多个值,记录模板位置
    'DIRS': [os.path.join(BASE_DIR, 'templates')],
    'APP_DIRS': True,
    'OPTIONS': {
    'context_processors': [
    'django.template.context_processors.debug',
    'django.template.context_processors.request',
    'django.contrib.auth.context_processors.auth',
    'django.contrib.messages.context_processors.messages',
    ],
    },
    },
    ]

    6.数据库引擎及连接信息
    DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.sqlite3',
    'NAME': os.path.join(BASE_DIR, 'MyWeb.db'),
    }
    }

    7.语言时区
    LANGUAGE_CODE = 'zh-cn'

    TIME_ZONE = 'Asia/Shanghai'

    8.静态文件地址
    STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)

  • 相关阅读:
    php类自动加载
    tp5自定义分页参数
    cURL error 60: SSL certificate problem...
    ajax动态刷新的元素,导致绑定事件失效
    thinkphp5省市区三级联动例子
    restful状态码常用
    mysql的like子句
    mysql官方的测试数据库employees超30万的数据,安装方法介绍
    Aes加解密,php
    php5.6,Ajax报错,Warning: Cannot modify header information
  • 原文地址:https://www.cnblogs.com/pythonPath/p/8072835.html
Copyright © 2020-2023  润新知