在 Windows Azure 网站上使用 Django、Python 和 MySQL:创建博客应用程序
编辑人员注释:本文章由 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 对象。
<html>
<head><title>MyBlog</title></head>
<body>
<h1>My Blog</h1>
{% for post in posts %}
<h1>{{ post.title }}</h1>
<em> <time datetime="{{ post.date.isoformat}}">
{{ post.date}}</time> <br/>
</em>
<p>{{ post.body }}</p>
{% endfor %}
</body>
</html>
设置静态目录路径
如果此时访问管理站点,您将发现样式表已损坏。这是因为没有为应用程序配置静态目录。
请将静态根文件夹路径设置为 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 以启动部署。成功完成部署后,即可浏览网站以创建首个博客。

创建博客文章
要创建博客,请使用先前创建的超级用户凭据登录管理站点 http://mydjangoblog.azurewebsites.net/admin。

仪表板将包括模型的链接,并可用于管理应用程序所用模型的内容。单击 Posts

创建首篇博客文章并保存

浏览网站主页,查看新创建的文章。

现在您已基本了解了在 Windows Azure 网站上使用 Python 构建所需内容的步骤。祝您编码愉快 :)
进一步阅读
适用于 Visual Studio 的 Python 工具 Wiki
适用于 Visual Studio 的 Python 工具的视频教程
本文翻译自:
在 Windows Azure 网站上使用 Django、Python 和 MySQL:创建博客应用程序的更多相关文章
- Windows Azure 网站上的 WebSocket 简介
编辑人员注释:本文章由 Windows Azure 网站团队的首席项目经理 Stefan Schackow 撰写. Windows Azure 网站最近新增了对 WebSocket 协议的支持..NE ...
- Windows Azure 网站上的 WordPress 3.8
编辑人员注释:本文章由 Windows Azure 网站团队的项目经理 Sunitha Muthukrishna 和 Windows Azure 网站开发人员体验合作伙伴共同撰写. WordPr ...
- 删除 Windows Azure 网站上的标准服务器头
编辑人员注释: 本文章由 Windows Azure 网站团队的项目经理 Erez Benari 撰写. 请求和响应中包含的 HTTP 头是Web 服务器和浏览器之间的 HTTP 通信过程的一部分.例 ...
- Python 每日提醒写博客小程序,使用pywin32、bs4库
死循环延迟调用方法,使用bs4库检索博客首页文章的日期是否与今天日期匹配,不匹配则说明今天没写文章,调用pywin32库进行弹窗提醒我写博客.
- 在 Windows Azure 网站 (WAWS) 上对 Orchard CMS 使用 Azure 缓存
编辑人员注释: 本文章由 Windows Azure 网站团队的项目经理 Sunitha Muthukrishna 撰写. 如果您当前的 OrchardCMS 网站在 Windows Azure 网站 ...
- Windows Azure 网站:应用程序字符串和连接字符串的工作原理
编辑人员注释:本文章由 Windows Azure 网站团队的首席项目经理 Stefan Schackow 撰写. Windows Azure 网站上有一个方便的功能,即开发人员可将 Azure 中的 ...
- Azure 网站上的 Java
编辑人员注释:本文章由Windows Azure 网站团队的项目经理Chris Compy 撰写. Microsoft 已推出针对 Azure 网站上基于 Java 的网站的支持.此功能旨在通过 ...
- Windows Azure 网站 (WAWS) 中的服务器端包含 (SSI)
编辑人员注释:本文章由 Windows Azure 网站团队的项目经理Erez Benari 撰写. Windows Azure 网站客户普遍关心的一个问题是关于我们对服务器端包含(Server ...
- 使用 IIS Manager 对 Windows Azure 网站进行远程管理
最近,我们为客户新增了使用 Windows自带的 IIS管理控制台管理 Azure网站的功能.IIS Manager支持 HTTP over SSL,提供到您的 Windows Azure 网站 ...
随机推荐
- webform中listbox运用,2个相互传值练习1:
AppendDataBoundItems(将数据绑定项追加到静态声明列表项上)属性改为Ture;SelectionMode(列表的选择模式改为多项)属性改为Multiple using System; ...
- 优雅的python
在知乎上看到的问题--python有哪些优雅的代码实现. 下面的代码大概也算不上优雅. 一下代码在python3中实现 更多内容可见:http://book.pythontips.com/en/lat ...
- html 5 废弃的标签和属性
第一类:表现性元素 basefont big center font s strike tt u 建议用语义正确的元素代替他们,并使用CSS来确保渲染后的效果 第二类:框架类元素 因框架有很多可用性及 ...
- Xcode 新版本如何设置ARC
在刚刚开始学习IOS开发时,最好不要开启ARC,这样有助于学习内存管理,但不少刚刚接触Xcode的朋友可能会发现,当你使用最新版本的Xcode时,敲入release等代码时会提示报错.这是因为系统默认 ...
- eclipse导出doc文档
选中需要导出的项目, 1 点击eclipse上面的Project,选择Generate javadoc..., 2 然后配置 javadoc command,比如我本地的路径为: C:\Program ...
- jQuery File Upload blueimp with struts2 简单试用
Official Site的话随便搜索就可以去了 另外新版PHP似乎都有问题 虽然图片都可以上传 但是response报错 我下载的是8.8.7木有问题 但是8.8.7版本结合修改main. ...
- ASP.NET MVC3 Razor视图引擎-基础语法
I:ASP.NET MVC3在Visual Studio 2010中的变化 在VS2010中新建一个MVC3项目可以看出与以往的MVC2发生了很明显的变化. 1.ASP.NET MVC3必要的运行环境 ...
- Android中如何判断是否联网
首先在AndroidManifest.xml中添加与连接网络相关的权限: [xhtml] view plain copy <uses-permission android:name=&qu ...
- 【C语言学习】存储类型
C语言中的存储类型主要有四种:auto.static.extern.register ★auto存储类型 默认的存储类型.在C语言中,假设忽略了变量的存储类型,那么编译器就会自己主动默认为auto型 ...
- 怎样用Eclipse正确导入开源库AndroidStaggeredGrid
今天带给大家的是怎样正确导入开源库AndroidStaggeredGrid的代码,大家在使用github上的开源控件时,多多少少都遇到过像AndroidStaggeredGrid这样的project结 ...