Python核心编程笔记————Web框架:Django(一)


书上的知识与现实已经有差距了,不过好在Django有自带的教程:Django文档

Django安装

预备条件

. 在安装Django之前,需要先安装python,Apache(安装过程无法正常启动服务时戳),数据库(标准版的Django只可运行于基于SQL的关系数据库管理系统,主要的四种是:PostgreSQL、 MySQL、 Oracle 和 SQLite。)

安装

. Django 自称是“能够很好地应对应用上线期限的 Web 框架”,在21世纪初发布。有多种方式安装Django,最简单的是使用Python包管理工具,如easy_install或pip,只需要在命令行窗口输入一行命令(配好python和python下的Scipts环境变量):

pip install django

项目和应用

. 对Django来说,可以认为项目是一系列文件,用来创建并运行一个完整的web站点,在项目这个文件夹下,有一个或多个子文件夹,每个子文件夹有特定的功能,称为应用。

创建项目

. Django安装成功的话,在python的Scripts文件夹下会有django-admin的exe文件和py文件,接下来可以在其他地方新建文件夹作为Django项目的存放目录,使用命令行窗口输入:

django-admin.py startproject xxx					//xxx是项目名

在存放目录中会创建以项目名命名的文件夹,其中有名为manage.py和同名子文件夹,子文件夹下有基本的几个python文件,其意思如下:

文件名 描述
_init_.py 告诉python这是一个软件包
urls.py 全局 URL 配置(“URLconf”)
settings.py 项目相关的配置
manage.py 管理 Django 项目的命令行工具
wsgi.py 作为你的项目的运行在 WSGI 兼容的Web服务器上的入口

运行开发服务器

. 通过项目中的manage.py工具,可以用下面这个简单的命令运行开发服务器:

python manage.py runserver

. 在浏览器中打开链接(http://127.0.0.1:8000/ 或 http://localhost:8000/) 可以看到成功页面。

创建应用

. 既然拥有了一个项目,就可以在其中创建应用,继续使用manage.py:

python manage.py startapp blog							//应用名随意

. 创建完成后在同级目录下会有一个blog文件夹,与项目类似,应用也是一个Python包,但是models.py和views.py都还没有代码,需要开发者自己今后添加。
. 为了让项目知道这个应用是它的一部分,需要编辑setting.py,找到文中的INSTALLED_APPS 元祖,在最后添加点路径:

INSTALLED_APPS = [
    ...
    'blog.apps.BlogConfig',
]

创建模型来添加数据库服务

. 接下来将在model.py中定义数据结构,遵循的规则是‘不要自我重复’,Django可以从为应用提供的模型信息中获得很多好处。
. 数据模型表示将会存储在数据库每条记录中的数据类型。Django提供很多字段用来将数据映射到应用中,例如:

from django.db import models

# Create your models here.
class BlogPost(models.Model):
    title = models.CharField(max_length=150)            #较短的单行文本
    body = models.TextField()                           #较长的文本
    timestamp = models.DateTimeField()

. 这是一个完整的博文模型对象,其中有三个字段(准确的说是四个字段,还有一个是Django默认创建的,该字段可自动递增,且每个模型中唯一)。这个类中的字段就像普通的类属性那样定义,每个都是特定字段类的实例,每个实例对应数据库中的一条记录。

设置数据库

. 首先先建立一个空的数据库,设置好用户(最好给这个用户足够的权限)和密码,这里用的是mysql。有了空的数据库后,剩下的就是通知Django来使用它,此时将用到项目中过的settings.py文件。将其中与数据库连接的信息部分更改一下:

DATABASES = {
    'default': {
        #'ENGINE': 'django.db.backends.sqlite3',
        #'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'testdb',
        'USER': 'test',
        'PASSWORD': '1234',
        'HOST': '',
        'PORT': '',
    }
}

创建表

. 接下来通知Django使用上面的信息来连接数据库,设置应用程序需要的表。首先需要添加应用,在命令行中使用:

>python manage.py makemigrations blog
Migrations for 'blog':
  blog\migrations\0001_initial.py
    - Create model BlogPost

接着使用migrate来自动创建表

python manage.py migrate

. 这个 migrate 命令检查 INSTALLED_APPS 设置,为其中的每个应用创建需要的数据表,至于具体会创建什么,这取决于你的 mysite/settings.py 设置文件和每个应用的数据库迁移文件

Python应用Shell

. 在Django中使用Python Shell,可以实例化模型,并与应用交互,使用如下命令启动shell:

python manage.py shell

. 接下来就可以操作数据库了,首先在数据库中新建了一张表名为blog_BlogPost,创建了4个字段,在model中有提到(id,title,body,timestamp),Django模型属性和Mysql数据库属性对应,然后在shell中可以开始啦:

>>> from datetime import datetime
>>> from blog.models import BlogPost
>>> BlogPost.objects.all()
<QuerySet []>
>>>bp = BlogPost(title = 'test',body = 'hello world!',timestamp = datetime.now())
>>> bp
<BlogPost: BlogPost object (1)>
>>> bp.save()
>>> BlogPost.objects.count()
1
>>> bp = BlogPost.objects.all()[0]
>>> print(bp.title)
test
>>> print(bp.body)
hello world!
>>> bp.timestamp.ctime()
'Tue Aug 20 10:31:46 2019'

. 与此同时,也能在数据库的可视化工具中找到相关的记录了。

使用admin管理应用

创建一个管理员账号

. 登录管理界面需要一个超级用户,按照如下步骤创建:

>python manage.py createsuperuser
Username (leave blank to use 'xx'): xxxx
Email address: [email protected]
Password:
Password (again):
This password is too short. It must contain at least 8 characters.
This password is entirely numeric.
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.

启动开发服务器

. 使用如下命令启动服务器:

python manage.py runserver

. 接着登录http://127.0.0.1:8000/admin/,就会打开登录界面,进入管理界面后还看不到自己创建的应用,需要在admin.py中进行添加:

from django.contrib import admin
from .models import BlogPost

# Register your models here.
admin.site.register(BlogPost)

. 重新登录界面后能看到自己创建的应用了,可以通过点击来进行编辑和管理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章