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

199 lines
7.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 编写您的第一个 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`。