编辑人员注释:本文章由 Windows Azure 网站团队的项目经理 Sunitha Muthukrishna 撰写。
根据您编写的应用程序,Windows Azure网站上的基本Python 堆栈可能完全满足您的需求,也可能不包括您的应用程序所需的所有模块或库。
不用担心,在此博客文章中,我将详细介绍使用Virtualenv和适用于Visual Studio的Python工具为您的应用程序创建 Python 环境的步骤。与此同时,我还将介绍如何将基于Django的站点发布到 Windows Azure 网站上。
使用 MySQL 数据库创建 Windows Azure 网站
现在,登录Azure管理门户,使用
Custom create 选项创建一个新网站。有关详细信息,请参阅如何创建Azure网站。我们将使用 MySQL 数据库创建一个空网站。
最后选择地区,在选择接受网站条款之后,即可完成安装。像往常一样,建议您将数据库放在与网站相同的地区,以降低成本。
在管理门户中双击您的网站即可查看网站的仪表板。单击“Download publish profile”。此时将下载
.publishsettings 文件,此文件可用于在 Visual Studio 中部署。
创建 Django 项目
在本教程中,我们将使用 Visual Studio 来构建 Django Web 应用程序。要使用 Visual Studio 构建应用程序,请安装PTVS 2.0。有关详细信息,请参阅如何使用Visual Studio构建Django应用程序
打开 Visual Studio 并创建一个新项目,方法是依次单击 New Project > Other Languages > Python > DjangoProject
在解决方案资源管理器中,为您的 Django 项目创建一个新的 Django 应用程序,方法是右键单击
DjangoProject > Add > DjangoApp
输入 Django 应用程序的名称,例如 myblog
创建虚拟环境
简单地说,可以通过 virtualenv 创建自定义的隔离 Python 环境。也就是说,您可以自定义并安装不同的包,而不影响网站的其余部分,因此此环境也可以用于进行实验。
在解决方案资源管理器中,右键单击 Django 项目中的 Python Environments,然后选择“Add Virtual Environment”
输入虚拟环境名称,例如“env”。这将创建名为“env”的文件夹,其中包含您的虚拟 Python 环境,但不包含任何pip 以外的 Python包
在虚拟环境中安装 MySQL-Python 和 Django 包
在解决方案资源管理器中,右键单击环境 env 并安装 Python 包:django
您可以在虚拟环境中查看 Django 安装的输出
同样,您需要安装 mysql-python,但请使用 easy_install,而不是此处所示的 pip
现在,您已在自己的虚拟环境中为 Python 安装了 Django 和 MySQL
构建数据库模型
Django 中的模型是继承自 Django Model类的类,用于指定特定对象的所有属性。模型类将其属性转换为存储在数据库中的值。
现在我们创建一个名为 Post 的简单模型,其中包含title、date和body 这三个字段,以在数据库中构建 post 表。要创建模型,将 models.py 文件添加到
myblog/ 文件夹下。
#import from Model class
from django.db import models
class Post(models.Model):
#Create a title property
title =models.CharField(max_length=64)
#Create a date property
date =models.DateTimeField()
#Create a body of content property
body = models.TextField()
# This method is just like toString() function in.NET.Whenever Python needs to show a
#string representation of an object, it calls __str__
def __str__(self):
return"%s " % (self.title)
安装模型
我们将需要通知 Django 在数据库中创建模型。为此,我们还需要执行以下几个操作:
· 首先,我们将在 settings.py 中配置应用程序的数据库。输入与 Windows Azure 网站关联的 MySQL 数据库信息。
DATABASES = {
'default': {
'ENGINE':'django.db.backends.mysql',
'NAME':'MYSQL-DATABASE-NAME',
'USER':'MYSQL-SERVER-USER-NAME',
'PASSWORD':'MYSQL-SERVER-USER-PASSWORD',
'HOST':'MySQL-SERVER-NAME',
'PORT': '',
}
}
接下来,将您的应用程序添加到 settings.py中的INSTALLED_APPS设置。
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'myblog',
)
· 将设置保存在 settings.py 中之后,我们将在您的 Clear DB 数据库中为已添加到
models.py 的模型创建架构。这可以通过运行 Django Sync DB实现
您可以自己编写代码来管理博客中文章的创建、编辑、删除,或者使用 Django 提供的管理模块,此模块提供了用于创建和管理文章的管理站点仪表板。有关如何启用 Django 管理站点的信息,请参阅这篇文章。
设置 Django 管理站点
管理站点将提供用于创建和管理博客文章的仪表板。首先,我们需要创建能够访问管理站点的超级用户。为此,如果您尚未创建管理用户,请运行以下命令。
Python manage.py createsuperuser
您可以使用 Django Shell 运行此命令。有关如何使用 Django Shell 的更多详细信息,请参阅这篇文章。
默认情况下,管理模块未启用,因此我们需要执行以下几个步骤:
· 首先,将 'django.contrib.admin' 添加到
settings.py 中的INSTALLED_APPS设置
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'myblog',
)
· 现在,更新 urls.py,以处理应用程序对管理站点以及对主页视图的请求。
from django.conf.urls import patterns, include, url
#import admin module
from django.contrib import admin
admin.autodiscover()
#set url patterns to handle requests made to yourapplication
urlpatterns = patterns('',
url(r'^$','DjangoApplication.views.home', name='home'),
url(r'^admin/',include(admin.site.urls)),
)
· 接下来,我们在 myblog/文件夹下创建 admin.py 以注册 Post 模型
from models import Post
from django.contrib import admin
#Register the database model so it will be visible in theAdmin site
admin.site.register(Post)
构建页面视图
我们将创建页面视图以列出您已创建的所有博客文章。要创建页面视图,请将views.py 文件添加到
myblog/ 文件夹下
from django.shortcuts import render_to_response
from models import Post
#Creating a view for the home page
def home(request):
posts = Post.objects.all()
#Renders a given template with a givencontext dictionary and
returns an
#HttpResponse object with that renderedtext.
return render_to_response('home.html',{'posts':posts} )
显示 Post 对象对用户的帮助不大,我们需要信息更丰富的页面来显示文章列表。这种情况下将需要使用模板。通常,模板用于生成 HTML,但是 Django 模板同样能够生成任何基于文本的格式。
要创建此模板,首先需要在 myblog/ 下创建名为templates 的目录。要在 views.py 中显示所有文章,请在 templates/ 文件夹下创建 home.html,它将遍历并显示所有 Post 对象。
MyBlogMy Blog
{% for post in posts %}
{{ post.title }}
{{ post.date}}
{{ post.body }}
{% endfor %}
设置静态目录路径
如果此时访问管理站点,您将发现样式表已损坏。这是因为没有为应用程序配置静态目录。
请将静态根文件夹路径设置为 D:\home\site\wwwroot\static
from os import path
PROJECT_ROOT =path.dirname(path.abspath(path.dirname(__file__)))
STATIC_ROOT = path.join(PROJECT_ROOT,'static').replace('\\','/')
STATIC_URL = '/static/'
将这些更改保存到 settings.py 中之后,运行此命令以使用 Django Shell 将所有静态文件收集到管理站点的“static”文件夹中
Python manage.pycollectstatic
设置模板目录路径
马上就大功告成了!Django 要求在 settings.py 中配置模板目录和静态文件夹目录的路径。请参照以下几个步骤来执行此操作。
· 为 SITE_ROOT 的路径创建一个变量
import os.path
SITE_ROOT = os.path.dirname(__file__)
· 之后,我们将设置 Templates 文件夹的路径。在发出请求时,TEMPLATES_DIR 会通知 Django 在哪里查找应用程序的模板。
TEMPLATE_DIRS = (
os.path.join(SITE_ROOT,"templates"),)
部署应用程序
现在我们已准备好将应用程序部署到 Windows Azure 网站 mydjangoblog。右键单击 DjangoProject 并选择“Publish”
您可以验证连接,然后单击 Publish 以启动部署。成功完成部署后,即可浏览网站以创建首个博客。
创建博客文章
仪表板将包括模型的链接,并可用于管理应用程序所用模型的内容。单击 Posts
创建首篇博客文章并保存
浏览网站主页,查看新创建的文章。
现在您已基本了解了在 Windows Azure 网站上使用 Python 构建所需内容的步骤。祝您编码愉快 :)
进一步阅读
本文翻译自: