geekdoc-python-zh/docs/pythoncentral/writing-your-first-python-d...

199 lines
7.0 KiB
Markdown
Raw Permalink Normal View History

2024-10-20 12:24:46 +08:00
# 编写您的第一个 Python Django 应用程序
> 原文:<https://www.pythoncentral.io/writing-your-first-python-django-application/>
## 创建 Django 项目
上一篇文章[介绍 Python 的 Django](https://www.pythoncentral.io/introduction-to-pythons-django/ "Introduction to Python's Django") 介绍了 Django 框架的概况。在本文中,我们将从头开始编写一个简单的 Django 应用程序。第一步是使用 Django 的一个内置命令`django-admin.py`创建一个项目。在 Virtualenv 中,键入以下命令:
【shell】
django-admin . py start project my blog
`django-admin.py`是一个方便的 shell 可执行文件,它提供了一系列子命令来管理 Django 应用程序。在前面的例子中,子命令`startproject`在当前目录中创建一个 Django 项目目录结构:
```py
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 项目,就让我们来运行它吧!
```py
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`。
```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`。