美文网首页
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