美文网首页
Django 基本知识学习笔记

Django 基本知识学习笔记

作者: 酷酷滴小爽哥 | 来源:发表于2018-08-31 17:11 被阅读0次

    创建项目

    打开命令行,进入想要安置项目的目录。

    命令行输入:django-admin startproject myblog

    若没有报错,则创建项目成功。

    注:django-admin 为安装 Django 后有的命令,可以命令行直接输入 django-admin 查看所有方法

    启动命令

    可以使用命令 python manage.py 查看对应的命令,运行项目使用:python manage.py runserver

    默认的端口号是 8000 想指定端口号,可以使用 python manage.py runserver 9999 这种形式,这里就跑在了 9999 端口上了。

    创建应用

    创建步骤:

    打开命令行,进入项目中 manage.py 同级目录

    命令行输入:python manage.py startapp blog (注意,应用名不能和 python 自有的 module 名产生冲突)

    添加应用名到 setting.py 中的 INSTALLDE_APPS 里

    目录介绍

    目录结构:

    myblog
    ├── blog
    │   ├── __init__.py  //python 中声名模块的文件,内容默认为空
    │   ├── __init__.pyc
    │   ├── admin.py    //该应用的后台管理系统配置
    │   ├── admin.pyc
    │   ├── apps.py     //该应用的一些配置,在 Django-1.9 以后自动生成
    │   ├── migrations  //数据移植(迁移)模块,内容自动生成
    │   │   ├── __init__.py
    │   │   └── __init__.pyc
    │   ├── models.py   //数据模块,使用 ORM 框架,类似于 MVC 结构中的 Models(模型)
    │   ├── models.pyc
    │   ├── tests.py    //自动化测试模块,Django 提供了自动化测试功能,在这里编写测试脚本(语句)
    │   └── views.py    //执行响应的代码所在模块,是代码逻辑的主要地点,项目中大部分代码均在此编写
    ├── db.sqlite3
    ├── manage.py      //与项目进行交互的命令行工具集入口(项目管理器),命令行输入 python manage.py 可以查看对应的命令
    └── myblog          //项目的一个容器,包含项目最基本的一些配置,目录名称不建议修改
        ├── __init__.py
        ├── __init__.pyc
        ├── settings.py  //项目的总配置文件,里面包含了数据库、Web 应用、时间等各种配置
        ├── settings.pyc
        ├── urls.py     //URL 配置文件,Django 项目中所以地址(页面)都需要我们自己去配置其 URL
        ├── urls.pyc
        ├── wsgi.py
        └── wsgi.pyc    //WSGI(Python Web Server Gateway Interface):Python 服务器网关接口,Python 应用与 web 服务器之间的接口
    

    settings.py 文件介绍

    BASE_DIR:项目的根目录

    SECRET_KEY:项目的安全码,必须要有,创建项目的时候会自动生成

    DEBUG:调试,开发过程中设置为 True 可以方便在前端页面看到错误信息;在生产环境中需要设置为 False

    ALLOWED_HOSTS:设置浏览器访问的域名,设置完成后,只可通过该域名访问网站

    INSTALLED_APPS:项目具有的应用,当我们写一个新的应用的时候,需要在这里添加

    MIDDLEWARE:中间件(Django 自带的一些工具集,一般不需要管它)

    ROOT_URLCONF:也就是 urls,表示 urls 这个配置文件

    TEMPLATES:模板的配置文件

    WSGI_APPLICATION:设置成模块,如 init 一样的功能

    DATABASES:数据库配置

    LANGUAGE_CODE:语言

    TIME_ZONE:时区

    STATIC_URL:静态文件的地址

    创建一个页面(响应)

    编辑 blog.views

    每个响应对应一个函数,函数必须返回一个响应。

    函数必须存在一个参数,一般约定为 request

    每一个响应(函数)对应一个 URL

    配置 URL

    编辑 urls.py

    每个 URL 都以 url 函数的形式写出来

    url 函数放在 urlpatterns 列表中

    url 函数三个参数:URL(正则),对应方法,名称

    第二种 URL 配置方式

    在根 urls.py 中引入 include

    在 APP 目录下创建 urls.py 文件,格式与 urls.py 相同

    根 urls.py 中 url 函数第二个参数改为 include('blog.urls')

    根 urls.py 针对 APP 配置的 URL 名称是该 APP 所有 URL 的总路径

    配置 URL 时注意正则表达式结尾符号 $ 和 /

    什么是 Templates

    HTML 文件

    使用 Django 模板语言(Django Template Language,DTL)

    可以使用第三方模板(如 jinja2 )

    开发第一个 template

    在 APP 根目录下创建名为 templates 的目录。

    在该目录下创建 HTML 文件。

    在 views.py 中返回 render(),三个参数:request、需要渲染的 HTML 、传的数据。

    render() 函数中支持一个 dict 类型参数,该字典是后台传递到模板的参数,键为参数名,在模板中使用 {{参数名}} 来直接使用。

    Django 查找 template 的问题

    问题: Django 按照 INSTALLED_APPS 中的添加顺序查找 templates,不同 APP 下 templates 目录中的同名 .html 文件会造成冲突。

    解决:在 APP 的 templates 目录下创建以 APP 名为名称的目录,将 HTML 文件放入新创建的目录下。

    Models 介绍

    通常,一个 Model 对应数据库的一张数据表,在 Django 中 Models 以类的形式表现,它包含了一些基本字段,以及数据的一些行为。这种和数据库之间映射关系,被称为 ORM 即对象关系映射(Object Relation Mapping),实现了对象和数据库之间的映射,隐藏了数据库访问细节,不需要编写 SQL 语句。

    编写 Models

    在应用根目录下创建 models.py,并引入 models 模块;创建类,继承 models.Model,该类即是一张数据表,然后在类中创建字段。

    字段即类里面的属性(变量),创建方式如下:

    attr = models.CharFiled(max_length=64) //CharFiled为参数类型,参数类型里有必传参数,还有可选参数,这里的 max_length 是必传参数
    

    生成数据表

    命令行进入 manage.py 同级目录,执行 python manage.py makemigrations app名(app名为可选参数),如果不指定,那么对目录下所有应用都生成数据表。

    然后,再执行 python manage.py migrate

    查看

    Django 会自动在 app/migrations/ 目录下生成移植文件

    执行 python manage.py sqlmigrate 应用名 文件id 查看 SQL 语句

    默认 sqlite3 的数据库在项目根目录下 db.sqlite3

    页面呈现数据

    在 views.py 中 import models

    然后设置:

    article = models.Article.objects.get(pk=1)
    render(request, page, {'article':article})//不仅仅支持字符串传递,还支持对象传递,如这里的对象传递
    

    Admin 简介

    Admin 是 Django 自带的一个功能强大的自动化数据管理界面,被授权的用户可以直接在 Admin 中管理数据库,Django 提供了许多针对 Admin 的定制功能。

    配置 Admin

    创建用户:

    python manage.py createsuperuser //创建超级用户
    

    Admin 入口:

    localhost:8000/admin/
    

    修改 settings.py 中 LANGUAGE_CODE='zh_Hans'

    配置应用

    在应用下 admin.py 中引入自身的 models 模块(或里面的模型类)

    编辑 admin.py : admin.site.register(models.Article)

    使用 Admin

    修改数据:

    进入 Admin 的管理页面

    点击 Article 超链接进入 Article 列表页面

    点击任意一条数据,进入编辑页面进行修改

    修改数据默认显示名称

    在 Article 类下添加一个方法

    根据 python 版本选择 __str__(self)__unicode__(self)

    在 Article 类下设置如下:

    def __unicode__(self):
            return self.title
    

    Django 中的超链接

    超链接目标地址

    href 后面是目标地址

    template 中可以用 "{% url 'app_name:url_name' param %}" 其中,app_name 和 url_name 都在 url 中配置

    再配 URL

    url 函数的名称参数

    1.根 urls ,写在 include() 的第二个参数位置,namespace = 'blog'

    2.应用下,则写在 url() 的第三个参数位置, name = 'article'

    主要取决于是否使用 include 引用了另一个 url 配置文件

    博客撰写页面

    编辑响应函数

    使用 request.POST['参数名'] 获取表单数据

    models.Article.objects.create(title, content) 创建对象

    涉及 POST 方法提交表单的,前端页面加上 {% csrf_token %}

    修改数据

    article.title = title

    article.save()

    补充

    templates 过滤器

    • 什么是过滤器?

      • 写在模板中,属于 Django 模板语言
      • 可以修改模板中的变量,从而显示不同的内容
    • 怎么使用过滤器?

      • {{ value | filter }}
      • 例如 {{ list_nums | length }}
      • 过滤器可叠加:{{ value | filter1 | filter2 | filter3 | ...}}

    Django shell

    • 什么是 Django shell ?

      • 它是一个 python 的交互式命令行程序
      • 它自动引入了我们的项目环境
      • 我们可以使用它与我们的项目进行交互
    • 如何使用 Django shell ?

      • python manage.py shell
      • 执行如下命令:
    from blog.models import Article
    Article.objects.all()
    
    • 有什么用?
      • 我们可以使用 Django shell 来进行一些调试工作
      • 测试未知的方法

    Admin

    • 创建 admin 配置类

      • class ArticleAdmin(admin.ModelAdmin)
      • 注册:admin.site.register(Article, ArticleAdmin)
    • 显示其他字段

      • list_display = ('title', 'content')
      • list_display 同时支持 tuple 和 list
    • 过滤器

      • list_filter = ('pub_time',)

    相关文章

      网友评论

          本文标题:Django 基本知识学习笔记

          本文链接:https://www.haomeiwen.com/subject/rxkewftx.html