Python数据分析与可视化:实战案例解析
137
2023-10-25
【摘要】 本书摘自《零基础Python 从入门到精通》一书中第1章,第1节,编者是壹零快学。
19.3 开始Django之旅
19.3.1 配置数据库
上一节已经介绍了Django的安装和创建项目, 以及一个简单的开发服务器。对于网站来说, 数据库也是一个必不可少的环节。本章的Django示例选用的是SQLite数据库。SQLite数据库作为一 种轻量级的数据库引擎, 小巧、简单、方便管理,具有其他大型数据库所不具备的易于上手的优 势。Django把数据库操作抽象成了ORM模型,用户只需在配置文件中做相关的配置即可,如果想要 换成别的数据库也只需要修改配置文件而不需要修改业务代码,极大地方便了用户的迁移。
在setting.py文件中设置相应的属性值对数据库进行设置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
默认的Django项目使用的就是SQLite,所以我们并不需要做任何改动。上面的操作只是配置数据库,但是并没有生成数据库。生成数据库可以使用manager.py的migrate来帮助我们操作:
python manage.py migrate
屏幕上会输出:
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying sessions.0001_initial... OK
这个操作会在目录下生成db.sqlite3文件,并且帮助我们生成数据库和相应的表。
19.3.2 生成Django应用
一个Django网站可能会包含多个Django应用。可以使用manage.py的startapp子命令来生成Django 应用。
python manage.py startapp news
这样会创建一个news目录,它的目录结构大致如下:
news
│ admin.py
│ apps.py
│ models.py
│ tests.py
│ views.py
│ __init__.py
│
└─migrations
__init__.py
这个目录包含了news应用的全部内容,现在让我们开始编写第一个网页。
首先打开news/views.py文件,输入如下代码:
动手写19.3.1
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello,world! This is news index")
这是Django中最简单的视图。要调用视图,我们需要将它映射到一个URL。为此,我们需要一 个URLconf。
在news目录中创建一个新的URLconf,可以在目录下新建文件urls.py,并编写如下代码:
动手写19.3.2
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),
]
读者可能已经发现,在内部的blog下也有一个urls.py文件。下一步就是要把news应用的urls.py 加入到项目的urls.py中。编辑blog/urls.py文件,先在开头导入include模块,然后在urlpatterns中加入 前面新建news的URLconf,修改后的文件如下:
动手写19.3.3
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^news/', include('news.urls')),
url(r'^admin/', admin.site.urls),
]
第 19 章 使用Django创建Web站点
方法include()相当于二级路由策略,它将接收到的URL地址去除了它前面的正则表达式,将剩 下的字符串传递给下一级路由进行判断。
include方法的背后是一种即插即用的思想。项目根路由不关心具体app的路由策略,只管往指 定的二级路由转发,实现了解耦的特性。app所属的二级路由可以根据自己的需要随意编写,不会 和其他的app路由发生冲突。app目录可以放置在任何位置,而不用修改路由。这是软件设计里很常 见的一种模式。
现在已将索引视图连接到URLconf。让我们来验证它的工作,运行以下命令:
python manage.py runserver
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~