7.0 KiB
编写您的第一个 Python Django 应用程序
原文:https://www.pythoncentral.io/writing-your-first-python-django-application/
创建 Django 项目
上一篇文章介绍 Python 的 Django 介绍了 Django 框架的概况。在本文中,我们将从头开始编写一个简单的 Django 应用程序。第一步是使用 Django 的一个内置命令django-admin.py创建一个项目。在 Virtualenv 中,键入以下命令:
【shell】
django-admin . py start project my blog
django-admin.py是一个方便的 shell 可执行文件,它提供了一系列子命令来管理 Django 应用程序。在前面的例子中,子命令startproject在当前目录中创建一个 Django 项目目录结构:
myblog/
manage.py
myblog/
__init__.py
settings.py
urls.py
wsgi.py
myblog是 Django 项目myblog的父目录。它可以被重命名为你喜欢的任何名字,因为它只是一个容器。manage.py是一个命令行实用程序,可以让您以各种方式与 Django 项目myblog进行交互。这个实用程序对于调试或练习代码非常有帮助。myblog/myblog是包含项目实际 Python 包的目录。因为它是一个普通的 Python 包,所以可以使用普通的 Python 语法导入其中的任何模块或包。例如,import myblog.settings导入myblog包内的设置模块。myblog/myblog/settings.py是 Django 项目的设置或配置。它包含在整个项目中使用的全局配置列表。myblog/myblog/urls.py声明此项目的 URL 路由。它包含一个 URL 映射列表,告诉项目哪个视图函数如何处理 HTTP(S)请求。myblog/myblog/wsgi.py是在兼容 WSGI 的 web 服务器上运行 Django 项目的脚本。
既然我们有一个 Django 项目,就让我们来运行它吧!
python manage.py runserver
Validating models...
发现 0 个错误
2013 年 3 月 20 日- 21:15:27
Django 版本 1.5,使用设置‘my blog . settings’
开发服务器运行在 http://127.0.0.1:8000/
用 CONTROL-C 退出服务器
在你最喜欢的浏览器中访问http://127.0.0.1:8000/会显示一个欢迎页面。Django 应用程序的默认 IP 地址是127.0.0.1,只能从本地机器访问。如果你想在其他计算机上显示你的应用程序,你可以修改 ip 地址和端口,比如python manage.py runserver 0.0.0.0:8000,它允许你的 Django 应用程序监听所有的公共 IP。
在 Django 建立一个数据库
任何重要网站最重要的一个方面是数据库后端。由于数据库后端通常被配置为全局环境变量,Django 在myblog/settings.py中提供了一个方便的配置default项来处理各种数据库配置。
Django 和 MySQL
在包含 Django 应用程序的 Virtualenv 中,运行以下命令: 【shell】 pip install MySQL-python
这将安装 MySQL Python 驱动程序。Django 的对象关系映射(ORM)后端将使用这个驱动程序在原始 SQL 语句中与 MySQL 服务器通信。
然后,在 mysql shell 中执行以下语句,为 Django 应用程序创建一个用户和一个数据库。 【shell】 MySQL>创建用户‘python central’@‘localhost’标识为‘12345’; mysql >创建数据库 myblog mysql > GRANT ALL ON myblog。* TO ' python central ' @ ' localhost ';
现在,修改myblog/settings.py。
DATABASES = {
'default': {
# Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'
'ENGINE': 'django.db.backends.mysql',
# Or the path to the database file if using sqlite3
'NAME': 'myblog',
# The following settings are not used with sqlite3
'USER': 'pythoncentral',
'PASSWORD': '12345',
# Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP
'HOST': '',
# Set to empty string for default
'PORT': '',
}
}
然后,运行下面的命令来初始化 Django 应用程序的数据库。 【shell】 python manage . py syncdb 创建表... 创建表 auth_permission 创建表 auth_group_permissions 创建表 auth_group 创建表 auth_user_groups 创建表 auth_user_user_permissions 创建表 django_content_type 创建表 django_session 创建表 django_site
您刚刚安装了 Django 的 auth 系统,这意味着您没有定义任何超级用户。您想现在创建一个吗?(是/否):是 用户名(留空使用‘我的用户名’): 邮箱: 密码: 密码(再次): 超级用户创建成功。 安装自定义 SQL... 安装索引... 从 0 个夹具安装了 0 个对象
最后,一个全新的 MySQL 数据库后端已经创建!您可以通过 django.contrib.auth.models 中的 【shell】 python manage . py shell
与新数据库进行交互导入用户 User . objects . all() <用户:my username>
Django 和 PostgreSQL
像 MySQL 一样,我们在 virtualenv 中安装了一个 Python PostgreSQL 驱动程序。 【shell】 pip 安装 psycopg2
然后,在 PostgreSQL shell 中执行以下语句,为 Django 项目创建一个用户和一个数据库。 【shell】 postgres = #创建用户 pythoncentral,密码为‘12345’; 创建角色 postgres=#创建数据库 myblog 创建数据库 postgres=#将数据库 myblog 上的所有权限授予 pythoncentral 授予
现在,修改myblog/settings.py。
【python】
DATABASES = {
' default ':{
Add ' PostgreSQL _ psycopg 2 ',' mysql ',' sqlite3 '或' Oracle '
' ENGINE ':' django . db . backends . PostgreSQL _ psycopg 2 ', #如果使用 sqlite3 'NAME': 'myblog ', #以下设置不适用于 sqlite3 ' USER ':' python central ','
然后,运行下面的命令来初始化 Django 应用程序的数据库后端。 【shell】 python manage . py syncdb 创建表... 创建表 auth_permission 创建表 auth_group_permissions 创建表 auth_group 创建表 auth_user_groups 创建表 auth_user_user_permissions 创建表 django_content_type 创建表 django_session 创建表 django_site
您刚刚安装了 Django 的 auth 系统,这意味着您没有定义任何超级用户。您想现在创建一个吗?(是/否):是 用户名(留空使用‘我的用户名’): 邮箱: 密码: 密码(再次): 超级用户创建成功。 安装自定义 SQL... 安装索引... 从 0 个夹具安装了 0 个对象
最后,您可以使用内置的 shell 与新的 Django 应用程序进行交互。 【shell】 python manage . py shell
from django . contrib . auth . models 导入用户 User . objects . all() <用户:my username>
注意,当您查询所有的User对象时,Django 的 shell 对于数据库后端是不可知的。相同的代码User.objects.all()用于MySQL和PostgreSQL检索数据库中所有用户的列表。
Django 简介摘要
在本文中,我们创建了我们的第一个 Django 应用程序myblog,并针对一个MySQL后端和一个PostgreSQL后端进行了测试。使用 Django 的ORM,我们可以编写数据库CRUD(创建、读取、更新、删除)操作,而无需关心底层数据库后端。在本系列的后续文章中,我们将对几乎所有的数据库代码广泛使用 Django 的ORM。