• Django框架基础


    Django框架简介

      MVC框架(Model View Controller)

      Django框架的设计模式借鉴了MVC框架的思想,不同之处在于它拆分的三部分为:Model(模型)、Template(模板)和View(视图),即MTV框架

      Django框架的MTC模式:

      Model(模型):负责业务对象与数据库的对象(ORM)

      Template(模版):负责如何把页面展示给用户

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

      此外,Django还有一个urls分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template

    APP

      一个Django项目可以分为很多个APP,用来隔离不同功能模块的代码

    #使用命令行创建app
    python manage.py startapp app01

      使用pycharm创建

      在下方弹出的命令窗口输入

    startapp app01

    路由系统

      URL配置就像Django所支撑网站的目录,它的本质是URL与要为该URL调用的视图函数之间的映射表

    #基本格式
    from django.conf.urls import url
    urlpatterns = [
     url(正则表达式, views视图函数, 参数, 别名),
    ]
    
    #参数说明
    #正则表达式:一个正则表达式字符串
    #views视图函数:一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串
    #参数:可选的要传递给视图函数的默认参数(字典形式)
    #别名:一个可选的name参数

    视图系统

      一个视图函数(类),是一个简单的python函数(类),它接受web请求并且返回web响应

    request对象

      Django使用请求和响应对象来通过系统传递状态

      当请求一个页面时,Django创建一个包含关于请求的元数据的HttpRequest对象。 然后Django加载适当的视图,将HttpRequest作为第一个参数传递给视图函数。每个视图负责返回一个HttpResponse对象

    #请求相关的常用值
    path_info     返回用户访问url,不包括域名
    method        请求中使用的HTTP方法的字符串表示,全大写表示。
    GET           包含所有HTTP  GET参数的类字典对象
    POST          包含所有HTTP POST参数的类字典对象
    body          请求体,byte类型 request.POST的数据就是从body里面提取到的

    response对象 

    #属性
    HttpResponse.content:响应内容
    HttpResponse.charset:响应内容的编码
    HttpResponse.status_code:响应的状态码

    Django shortcut functions

    render()
    #结合一个给定的模板和一个给定的上下文字典,并返回一个渲染后的 HttpResponse 对象
    
    from django.shortcuts import render
    
    def my_view(request):
        # 视图的代码写在这里
        return render(request, 'index.html', {'books': books})
    redirect()
    #默认返回一个临时的重定向;传递permanent=True 可以返回一个永久的重定向
    
    def my_view(request):
        #代码
        return redirect('/login/')

    模板系统

      变量相关的用{{ }},逻辑相关的用{% %}

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" href="/static/bootstrap.min.css">
        <title>book_list</title>
    
    </head>
    <body>
    
    <div class="container">
        <a href="/add_book/" class="btn btn-success" style="margin-top:20px;margin-bottom: 20px;">add</a>
        <div class="panel panel-primary">
            <div class="panel-heading">book_list</div>
            <div class="panel-body">
                <table class="table table-condensed">
                    <thead>
                    <tr>
                        <th>#</th>
                        <th>BookName</th>
                        <th>Operation</th>
                    </tr>
                    </thead>
                    <tbody>
                    {% for book in books %}
                        <tr data-id="{{ book.id }}">
                            <td>{{ forloop.counter }}</td>
                            <td>{{ book.title }}</td>
                            <td>
                                <a href="/edit_book/?id={{ book.id }}" class="btn btn-info">edit</a>
                                <a href="/delete_book/?id={{ book.id }}" class="btn btn-danger">delete</a>
                            </td>
                        </tr>
                    {% endfor %}
                </table>
            </div>
        </div>
    </div>
    
    <script src="/static/jquery-3.3.1.min.js"></script>
    <script src="/static/bootstrap.min.js"></script>
    
    </body>
    </html>
    book_list.html
    def book_list(request):
        books = models.Book.objects.all()
        return render(request, 'book_list.html', {"books": books})
    book_list.python

    模型

      Django中使用ORM模式将程序中的对象自动持久化到关系数据库中

    #创建models
    from django.db import models
    
    # Create your models here.
    class Book(models.Model):
        id = models.AutoField(primary_key=True)
        title = models.CharField(max_length=32)

      ORM操作

    #增加数据
    models.Book.objects.create(title=book_name)
    
    #查询数据
    models.Book.objects.get(id=book_id)
    models.Book.objects.all()
    
    #修改数据
    new_title='xxx'
    obj=models.Book.objects.get(id=book_id)
    obj.title=new_title
    obj.save()
    
    #删除数据
    models.Book.objects.get(id=delete_id).delete()
  • 相关阅读:
    AssetBundleNote
    UNet笔记
    HololensAR开发设置
    Hololens真机使用Unity开发流程
    数据结构笔记
    解决粘包问题
    使用C#中的Socket进行通讯
    解决Sql注入,防止恶意数据
    110. 平衡二叉树
    104.二叉树的最大深度
  • 原文地址:https://www.cnblogs.com/iamluoli/p/8745038.html
Copyright © 2020-2023  润新知