Django 框架解析+基本配置+基本命令+常用函数

目录

    • 框架解析
    • 基本配置
      • BASE_DIR
      • DEBUG
      • ALLOWED_HOSTS
      • INSTALLED_APPS
      • MIDDLEWARE
      • TEMPLATES
      • DATABASES
        • SQLit 3(默认)
        • MySQL
        • PostgreSQL
        • Oracle
      • LANGUAGE_CODE
      • TIME_ZONE
      • ROOT_URLCONF
      • 静态文件
    • 基本命令
      • 1、创建一个django project
      • 2、在mysite目录下创建应用,比如blog:
      • 3、启动django项目
      • 4、同步更改数据库表或字段
      • 5、清空数据库
      • 6、创建超级管理员
      • 7、Django 项目环境终端
      • 8、Django 项目环境终端
      • 9、更多命令
    • 常用函数及模板语言
      • 业务层
      • 模板
      • 注册数据表到后台管理
    • 引用

框架解析

MVT框架
M:数据层【数据库】Model.py
V:业务层【查询数据库、处理路由请求业务】view.py
T:表现层(前后端不分离)【模板、html】template文件夹

manage.py Django管理引擎 驱动相关命令 python manage.py [相关命令]

  • project #项目总控文件夹
    • settings.py # 全局配置
    • urls.py # 总路由
    • wsgi.py # nginx/apache相关
    • init.py # 全局初始化(一般不用)
  • app # 应用
    • admin.py # 将数据表注册到后台管理
    • models.py # 数据层
    • urls.py # 分路由
    • view.py # 业务层
    • init.py # 初始化(一般不用)

基本配置

BASE_DIR

当前项目的绝对路径 ( 动态计算出来的 )

DEBUG

用于配置 Django 项目的启用模式 , 取值 :

1. True 表示开发环境中使用 调试模式 ( 用于开发中 )

2. False 表示当前项目运行在生产环境中 ( 不启用调试 )

ALLOWED_HOSTS

设置允许访问到本项目的网络地址列表 , 取值 :

  1. [] 空列表 , 表示只有 127.0.0.1, localhost, ‘[::1]’ 能访问本项目
  2. [’*’] ,表示任何网络地址都能访问到当前项目
  3. [’*.tedu.cn’, ‘weimingze.com’] 表示只有当前两个主机能访问当前项目

注意 :如果要在局域网其它主机也能访问此主机 , 启动方式应使用如下模式 :python3 manage.py runserver 0.0.0.0:5000 # 指定网络设备所有主机都可以通过 5000 端口访问 ( 需加 ALLOWED_HOSTS = [’*’])

INSTALLED_APPS

指定、注册当前项目中安装的应用列表或定义的app

MIDDLEWARE

用于注册中间件

TEMPLATES

用于指定模板的配置信息

DATABASES

用于指定数据库的配置信息
  支持SQLite 3(默认)、PostgreSQL 、MySQL、Oracle数据库的操作

SQLit 3(默认)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

MySQL

DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME':'dbname',   #注意这里的数据库应该以utf-8编码
    'USER': 'xxx',
    'PASSWORD': 'xxx',
    'HOST': '',
    'PORT': '',
    }
}

如下设置放置的与project同名的配置的 init.py文件中

import pymysql
pymysql.install_as_MySQLdb()

PostgreSQL

DATABASES = {
    'default': {
        'NAME': 'app_data',
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'USER': 'XXX',
        'PASSWORD': 'XXX'
    }

Oracle

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.oracle',
        'NAME': 'xe',
        'USER': 'a_user',
        'PASSWORD': 'a_password',
        'HOST': '',
        'PORT': '',
    }
}

LANGUAGE_CODE

用于指定语言配置

取值 :

英文 : “en-us”
中文 : “zh-Hans”

TIME_ZONE

用于指定当前服务器端时区

取值 :

世界标准时间 : “UTC”
中国时区 : “Asia/Shanghai”

ROOT_URLCONF

用于配置根级 url 配置 ‘mywebsite1.urls’

如 :ROOT_URLCONF = ‘mywebsite1.urls’

静态文件

(1)静态文件:不能与服务器端做动态交互的文件都是静态文件

如:图片,css,js,音频,视频,html文件(部分)

(2)在 settings.py 中配置一下两项内容:

1.配置静态文件的访问路径

通过哪个url地址找静态文件
STATIC_URL = ‘/static/’
STATIC_ROOT = os.path.join(BASE_DIR, “/static/”)

基本命令

1、创建一个django project

django-admin.py startproject mysite

当前目录下会生成mysite的工程,目录结构如下:

manage.py ----- Django项目里面的工具,通过它可以调用django shell和数据库等。
settings.py ---- 包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量。
urls.py ----- 负责把URL模式映射到应用程序。

2、在mysite目录下创建应用,比如blog:

python manage.py startapp blog

3、启动django项目

 python manage.py runserver 8080

4、同步更改数据库表或字段

python manage.py makemigrations
python manage.py migrate

这种方法可以创建表,当你在models.py中新增了类时,运行它就可以自动在数据库中创建表了,不用手动创建。

5、清空数据库

python manage.py flush

此命令会询问是 yes 还是 no, 选择 yes 会把数据全部清空掉,只留下空表。

6、创建超级管理员

python manage.py createsuperuser
# 按照提示输入用户名和对应的密码就好了邮箱可以留空,用户名和密码必填
 
# 修改 用户密码可以用:
python manage.py changepassword username

7、Django 项目环境终端

 python manage.py shell

这个命令和 直接运行 python 进入 shell 的区别是:你可以在这个 shell 里面调用当前项目的 models.py 中的 API,对于操作数据的测试非常方便。

8、Django 项目环境终端

 python manage.py dbshell

Django 会自动进入在settings.py中设置的数据库,如果是 MySQL 或 postgreSQL,会要求输入数据库用户密码。

在这个终端可以执行数据库的SQL语句。如果您对SQL比较熟悉,可能喜欢这种方式。

9、更多命令

 python manage.py

查看所有的命令,忘记子名称的时候特别有用。

常用函数及模板语言

业务层

HttpResponse :它返回到前台传入一个字符串,发送给浏览器。(也可传json)

return HttpResponse("请求成功")
return HttpResponse("
请求成功
"
) return HttpResponse(json.dumps(data))

render:可以传递三个参数 1 request参数,2.渲染的html页面,3.带数据的值。

context['xcols'] = xcols
context['ycol'] = ycol
context['missing'] = missing
context['trainingset_s'] = trainingset_s
context['testset_s'] = testset_s
context['feat'] = feat
context['file_name'] = file_name
context['row_count'] = row_count
return render(request, 'custom_model/preprocessing.html', context)

renderct: url参数 跳转到指定页面

renderct('user:login')
renderct('www.baidu.com/user/login')

JsonResponse:返回json

data = {"msg": "注册成功!"}
return JsonResponse(data)

模板

引导静态文件

{% load staticfiles %}

业务层传递的变量

{{ sudent_name }}

过滤器

{{ name | lower }}

for循环

<ul>
{% for student in student_list %}
    <li>{{ student.name }}</li>
{% endfor %}
</ul>

if,elif和else标签

{% if athlete_list %}
    Number of athletes: {{ athlete_list|length }}
{% elif athlete_in_locker_room_list %}
    Athletes should be out of the locker room soon!
{% else %}
    No athletes.
{% endif %}

模板

{% block body_block %}
    正文内容
{% endblock %}

重写模板

{% extends "custom_model/base.html" %}
{% block body_block %}
    <div class="zhenwen">
        欢迎
    </div>
{% endblock %}

注册数据表到后台管理

admin.py

from .models import UserProfileProducts
class UserProfileAdmin(admin.ModelAdmin):
    pass
# 注册
admin.site.register(UserProfile, UserProfileAdmin)

引用

https://www.cnblogs.com/maplethefox/p/11233909.html
https://www.cnblogs.com/dapianzi/p/8177797.html
https://www.cnblogs.com/liangying666/p/9740041.html
https://www.liujiangblog.com/course/django/145

你可能感兴趣的:(python,django,python)