Django简介

Posted ay742936292

tags:

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

一,MVC与MTV模型

  MVC:把web应用分为模型Model,控制器Controller和视图View三层。

    Model模型:负责在数据库中存取数据(通过orm),并且把数据传递给视图VIew

    Controller控制器:负责处理用户输出的数据,决定传递指令给模型还是给视图

    VIew视图:向用户展示信息。

  MTV:Django的的MTV模式本质和MVC一样,只是定义上不同而已

    M 代表模型(Model): 负责业务对象和数据库的关系映射(ORM)。

    T 代表模板 (Template):负责如何把页面展示给用户(html)。

    V 代表视图(View):   负责业务逻辑,并在适当时候调用Model和Template。

    ps:除了以上三层之外,还需要一个URL分发器,它的作用是将一个个URL的页面请求分发给不同的View处理,View再调用相应的Model和Template。

二,下载Django

  方式一:pip install django == 1.11.11(指定版本号)

  方式二:用pycharm中的settings进行安装

  方式三:用pycharm的Terminal命令进行安装

三,创建django项目工程以及应用

  命令行创建:

    创建django项目:django-admin startproject 项目名

    创建app应用:python3 manage.py startapp app01

    启动django项目:python3 manage.py runserver 

    ps:用命令行创建django默认不会自动创建templates文件夹需要你手动自己创建(注意改文件夹路径是否被添加配置文件中)

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

  pycharm创建:

    创建django项目:FILE >>> new project 选择第二个django 需要注意名字不能有中文,选择本地的解释器,勾选后台管理

    创建app:pycharm命令行创建:python3 manage.py startapp app01

    启动:点击绿色小箭头

 

注意事项:

  1.计算机的名称不能有中文

  2.一个pycharm窗口就是一个项目,不要多个项目放在一个窗口里面

  3.项目名不能起中文

  4.用django一定要保证只有一个在运行状态

  5.一定记得清浏览器的缓存

四,Django各个文件的作用

  在创建app时需要配置文件中注册才能生效!

INSTALLED_APPS = [
    django.contrib.admin,
    django.contrib.auth,
    django.contrib.contenttypes,
    django.contrib.sessions,
    django.contrib.messages,
    django.contrib.staticfiles,
    app01 # 简写
    # ‘app01.apps.App01Config‘ # 全称(两者都可以使用)
]

  应用名:

    migrations :数据库迁移记录相关数据

    admin.py:django后台管理相关

    models.py :模型表相

    views.py:视图函数相关

  项目名:

    settings.py :配置文件

    urls.py:路由与视图函数的映射关系

  templates:

    项目用到的所有的html文件都放在这个文件夹里面

  manage.py 

    django入口文件

五,三个最基本的操作

  HttpResponse:返回字符串

  render:返回一个html页面

  redirect:重定向

  案例:

    app01下的view.py

from django.shortcuts import render,HttpResponse,redirect

# Create your views here.
def index(request):
    # 返回字符串
    return HttpResponse("你好啊 我的奴隶!")

def reg(request):
    user_dict = name:jason,password:123
    # 返回一个html文件
    # return render(request,‘reg.html‘,‘user_dict‘:user_dict)
    return render(request,reg.html,locals()) # 上面所有的信息

def login(request):
    # 重定向(转向第三方网址)
    return redirect(http://www.xiaohuar.com)

    同时MyDjango下面的urls.py添加

from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
    url(r^admin/, admin.site.urls),
    url(r^index/, views.index),
    url(r^reg/, views.reg),
    url(r^login/, views.login),
    url(r^xxx/, views.xxx),
]

   ps:django识别到你的代码变话,然后自动重启,但是有时候反应速度比较慢。最好手动重启,也可以多刷新以及浏览器。

  如何用Django 来操作mysql

  第一步:修改settings.py的配置信息(默认为sqlite3,改为mysql):

DATABASES = 
    default: 
        ENGINE: django.db.backends.mysql, # 修改数据库引擎
        NAME: my_django, # 定义数据库名
        USER:root, # 用户名
        PASSWORD:641220, # 密码
        HOST:127.0.0.1, # IP
        PORT:3306, # mysql端口
    

   第二步:在工程名的__init__文件下如下配置:

import pymysql
pymysql.install_as_MySQLdb()

  第三步:在操作数据的应用下的models.py中如下设置表名,字段等等:

from django.db import models
__author__ = root
# Create your models here.

from django.db import models
class Student(models.Model):
    """
    创建如下几个表的字段
    """
    # 学号 primary_key=True: 该字段为主键
    studentNum = models.CharField(studentNum, primary_key=True, max_length=15)
    # 姓名 字符串 最大长度20
    name = models.CharField(name, max_length=20)
    # 年龄 整数 null=False, 表示该字段不能为空
    age = models.IntegerField(age, null=False)
    # 性别 布尔类型 默认True: 男生 False:女生
    sex = models.BooleanField(sex, default=True)
    # 手机 unique=True 该字段唯一
    mobile = models.CharField(mobile, unique=True, max_length=15)
    # 创建时间 auto_now_add:只有在新增的时候才会生效
    createTime = models.DateTimeField(auto_now_add=True)
    # 修改时间 auto_now: 添加和修改都会改变时间
    modifyTime = models.DateTimeField(auto_now=True)
    # 指定表名 不指定默认APP名字——类名(app_demo_Student)
    class Meta:
        db_table = student 

  第四步:手动在mysql中创建刚刚设置的数据库(数据库名用刚刚在settings中使用的)

  第五步:生成一个迁移文件,在终端中输入:python3 manage.py makemigrations

  第六步:生成成功之后会在migrations中生成一个0001_initial.py文件。然后再向终端中输入:python3 manage.py migrate

  这样表就创建成功了。

  查询数据:

  第一步:首先再view中定义一个查询函数,取出想要的数据:

def select(request):
    # 查询name = tom1的数据
    # sql语句已经被django封装好了
    result = Student.objects.filter(name=tom1)
    """
    result为<class ‘django.db.models.query.QuerySet‘>的对象
    需要进行数据处理
    """
    user_list = []
    for i in result:
        content = studentNum: i.studentNum, name: i.name, sex: i.sex
        user_list.append(content)
    print(user_list)
    return render(request,reg.html,user_list:user_list)

  第二步:使用render将数据放在html文件,并显示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
    <link href="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
    <script src="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
    <div class="row">
        <div class="col-md-8 col-md-offset-2">
            <table class="table table-hover table-striped table-bordered">
                <thead>
                    <tr>
                        <th>id</th>
                        <th>name</th>
                        <th>sex</th>
                    </tr>
                </thead>
                <tbody>
                    % for user in user_list %  <!--[,,,]-->
                        <tr>
                            <td> user.studentNum </td>
                            <td> user.name </td>
                            <td> user.sex</td>
                        </tr>
                    % endfor %
                </tbody>
            </table>
        </div>
    </div>
</div>
</body>
</html>

  ps:别忘了在urls.py文件中配置新的url后缀。

from django.conf.urls import url
from django.contrib import admin
from app03 import views
urlpatterns = [
    url(r^admin/, admin.site.urls),
    url(r^insert/,views.insert),
    url(r^select/,views.select) # 调用查询数据的函数
]

 

  

  

      

 

 

 

 

  

  

    

    

  

 

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

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

Android 逆向类加载器 ClassLoader ( 类加载器源码简介 | BaseDexClassLoader | DexClassLoader | PathClassLoader )(代码片段

Django REST框架--认证和权限

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

Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段

使用 Django 模板作为片段