在 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 网站 ...
随机推荐
- java异常回顾
String getMessage():返回此Throwable的详细消息字符串 void PrintStackTrace():将throw及其追踪输出至标准错误流 void printStackTr ...
- 去掉word2007回车后自动编号
1. 在使用word自动编号时,回车续写上一编号内容可能会行距很宽,这时候使用shift+回车不会自动下一编号,而且是正常行距 取消回车自动编号: 打开Word文档,单击菜单栏上的[格式]→[自动套用 ...
- mbed 初试(LinkNode 板卡)(2016-04-21)
前言 感谢论坛,感谢 LinkSrite,论坛活动申请了一个 LinkNode,体验了一下 mbed. 翻看完官方 wiki,大概了解了一下 mbed 的开发,然后做了 blink 和 pwm 的测试 ...
- Median of Two Sorted Arrays-分治法
题目意思很简单将两个有序数组合并之后的中位数找出来.题目要求使用log(m+n)的时间复杂度来做. 虽然言简意赅,但不得不承认这个题目我自己想了好久也没做出来,隐约觉得应该使用寻找第k大数的算法来做, ...
- JS日历控件
<input type="text" id="st" name="st" onclick="return Calendar( ...
- memcache学习使用
一.安装 二.telnet测试 启动:memcached -d -m 120.24.242.100 -p 11211 -u root 测试:telnet localhost 11211 >> ...
- wdcp centos6.5多网站部署
一.wdcp介绍 wdCP是WDlinux Control Panel的简称,是一套通过WEB控制和管理服务器的Linux服务器管理系统以及虚拟主机管理系统,旨在易于使用Linux系统做为我们的网站服 ...
- 关于 firefox 无法在 passport.csdn.net 找到该服务器
很奇怪的现象:用firefox上网,某些网站打开总是会提示 无法在XXX找到该服务器.但是使用其他浏览器,比如360却可以正常打开. 我已经将firefox加入了防火墙的信任列表,但是仍旧是这样. 而 ...
- 详细解析BluetoothAdapter的详细api
(1)开关状态值 (2)扫描状态值 (3)蓝牙操作接收的广播 (4)蓝牙操作请求的广播 (5)附加域 (6)错误码 (1)获取蓝牙适配器 (2)获取state状态方法 (3)蓝牙是否可用 (4)打开蓝 ...
- HDU2276 - Kiki & Little Kiki 2(矩阵高速幂)
pid=2276">题目链接 题意:有n盏灯.编号从1到n.他们绕成一圈,也就是说.1号灯的左边是n号灯.假设在第t秒的时候,某盏灯左边的灯是亮着的,那么就在第t+1秒的时候改变这盏灯 ...