【django开发】知识经验总结共50页md文档。今日分享:django项目搭建

举报
程序员一诺112 发表于 2023/11/03 19:11:41 2023/11/03
【摘要】 Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以"插件"形式服务于整个框架,Django有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。这使得Django具有很强的可扩展性。它还强调快速开发和DRY(DoNotRepeatYourself)原则

Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以"插件"形式服务于整个框架,Django有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。这使得Django具有很强的可扩展性。它还强调快速开发和DRY(DoNotRepeatYourself)原则


全套Django笔记直接地址: 请移步这里


共 4 章,47 子模块,总计 22989 字





Django流程



重点


  • MVT 流程:掌握M,V,T的每个模块的功能,了解MVT的流程

  • 创 建Django项目和应用

    • django-admin startproject name

    • python manager.py startapp name

  • 视 图和ULR

    • 视图的请求和响应

    • URL的匹配路径




站点管理


  • 站 点: 分为内容发布公共访问两部分

  • 内 容发布的部分由网站的管理员负责查看、添加、修改、删除数据

  • Django能够根据定义的模型类自动地生成管理模块

  • 使用Django的管理模块, 需要按照如下步骤操作 :

    • 1.管理界面本地化

    • 2.创建管理员

    • 3.注册模型类

    • 4.发布内容到数据库


1.管理界面本地化


  • 本地化是将显示的语言、时间等使用本地的习惯,这里的本地化就是进行中国化.

  • 中国大陆地区使用简体中文, 时区使用亚洲/上海时区, 注意这里不使用北京时区.

  • 本地化前

  • 本地化后


2.创建管理员


  • 创建管理员的命令 :

    python manage.py createsuperuser

  • 按提示输入用户名、邮箱、密码

  • 重置密码

  • python manager.py changepassword 用户名

  • 登陆站点 :ht://127.0.0.1:8000/admin

    • 需要服务器是启动状态

  • 登陆站点成功

    • 站点界面中没有书籍和人物管理入口,因为没有注册模型类


3.注册模型类


  • 应用admin.py文件中注册模型类

    • 需要导入模型模块 :from book.models import BookInfo,PeopleInfo

  • 注册模型后

注 册模型成功后, 就可以在站点管理界面方便快速的管理数据.


4.发布内容到数据库


  • 发布内容后,优化模型类展示

  • 准备书籍列表信息的模型类

    class BookInfo(models.Model):

    # 创建字段,字段类型...


    name = models.CharField(max_length=10)
​
    def __str__(self):
        """将模型类以字符串的方式输出"""
        return self.name




视图和URL


  • 站点管理页面做好了, 接下来就要做公共访问的页面了.

  • 对于Django的设计框架MVT.

    • 用户在URL中请求的是视图.

    • 视图接收请求后进行处理.

    • 并将处理的结果返回给请求者.

  • 使用视图时需要进行两步操作

    • 1.定义视图

    • 2.配置URLconf


1. 定义视图


  • 视图就是一个Python函数,被定义在应用views.py中.

  • 视图的第一个参数是HttpRequest类型的对象reqeust,包含了所有请求信息.

  • 视图必须返回HttpResponse对象,包含返回给请求者的响应信息.

  • 需要导入HttpResponse模块 :from django.http import HttpResponse

  • 定义视图函数 : 响应字符串OK!给客户端

思 考 : 如何才能让请求找到视图?


2. 配置URLconf


  • 查找视图的过程 :

    • 1.请求者在浏览器地址栏中输入URL, 请求到网站.

    • 2.网站URL信息.

    • 3.然后与编写好的URLconf逐条匹配.

    • 4.如果匹配成功则调用对应的视图.

    • 5.如果所有的URLconf都没有匹配成功.则返回404错误.

  • URLconf入口

  • 需要两步完成URLconf配置

    • 1.在项目中定义URLconf

    • 2.在应用中定义URLconf

  • 项目 中 定义URLconf

  • 应用 中 定义URLconf

    • 提示:一条URLconf包括URL规则、视图两部分

      • URL规则使用正则表达式定义.

      • 视图就是在views.py中定义的视图函数.

  * url匹配过程
​
  * 



3. 测试:请求访问


  • ht://127.0.0.1:8000/


4. 总结


视图处理过程如下图:

使用视图时需要进行两步操作,两步操作不分先后

  1. 配置URLconf

  2. 应用/views.py中定义视图




总结View和URL匹配流程





模板


思考 : 网站如何向客户端返回一个漂亮的页面呢?

  • 提示 :

    • 漂亮的页面需要htmlcssjs.

    • 可以把这一堆字段串全都写到视图中, 作为HttpResponse()的参数,响应给客户端.

  • 问题 :

    • 视图部分代码臃肿, 耦合度高.

    • 这样定义的字符串是不会出任何效果和错误的.

    • 效果无法及时查看.有错也不容易及时发现.

  • 设想 :

    • 是否可以有一个专门定义前端页面的地方, 效果可以及时展示,错误可以及时发现,并且可以降低模块间耦合度!

  • 解决问题 : 模 板

    • MVT设计模式中的T,Template

  • Django 中 , 将前端的内容定义在模板中, 然后再把模板交给视图调用, 各种漂亮、炫酷的效果就出现了.


模板使用步骤


  • 1.创建模板

  • 2.设置模板查找路径

  • 3.模板接收视图传入的数据

  • 4.模板处理数据


1.创建模板


  • 应用同级目录下创建模板文件夹templates. 文件夹名称固定写法.

  • templates文件夹下, 创建应用同名文件夹. 例, Book

  • 应用同名文件夹下创建网页模板文件. 例 :index.html


2.设置模板查找路径



3.模板接收视图传入的数据


  • 视图模板加载


4.模板处理数据



5. 查看模板处理数据成果





总结View-Templates流程





展示列表



需求



实现步骤


  • 1.创建视图

  • 2.创建模板

  • 3.配置URLconf


1.创建视图


  • 查询数据库数据

  • 构造上下文

  • 传递上下文到模板

    # 定义视图:提供书籍列表信息


def bookList(request):


    # 查询数据库书籍列表数据


    books = BookInfo.objects.all()


    # 构造上下文


    context = {'books':books}


    # 数据交给模板处理,处理完成后通过视图响应给客户端


    return render(request, 'Book/booklist.html', context)


2.创建模板


  • 读取上下文数据

  • 构造网页html文档 : 书籍信息以列表样式展示




      </ul>

      </body> </html>


    3.配置URLconf


    • 进入应用中的urls.py文件

      from django.conf.urls import url from book.views import index,bookList

      urlpatterns = [ url(r'^$',index),

        # 匹配书籍列表信息的URL,调用对应的bookList视图


        url(r'^booklist/$',bookList)
    ]




    配置和静态文件





    未完待续 下一期下一章


    完整笔记请看文章开头

    【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
    • 点赞
    • 收藏
    • 关注作者

    评论(0

    0/1000
    抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。