在 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 > Django Project

在解决方案资源管理器中,为您的 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 datebody 这三个字段,以在数据库中构建 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 your
application 

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 the Admin 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 given context dictionary and

returns an

   #HttpResponse object with that rendered
text.

   return render_to_response('home.html', {'posts':posts} )

显示 Post 对象对用户的帮助不大,我们需要信息更丰富的页面来显示文章列表。这种情况下将需要使用模板。通常,模板用于生成 HTML,但是 Django 模板同样能够生成任何基于文本的格式。   

要创建此模板,首先需要在 myblog / 下创建名为templates 的目录。要在 views.py 中显示所有文章,请在 templates / 文件夹下创建 home.html,它将遍历并显示所有 Post 对象。

<html>

 <head><title>My
Blog</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.py collectstatic

设置模板目录路径

马上就大功告成了!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 以启动部署。成功完成部署后,即可浏览网站以创建首个博客。

创建博客文章

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

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

创建首篇博客文章并保存

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

现在您已基本了解了在 Windows Azure 网站上使用 Python 构建所需内容的步骤。祝您编码愉快 :)

进一步阅读

Django 项目

适用于 Visual Studio 的 Python 工具 Wiki

适用于 Visual Studio 的 Python 工具的视频教程

Windows Azure 网站 (WAWS)

本文翻译自:

https://blogs.msdn.com/b/windowsazure/archive/2013/12/17/using-django-python-and-mysql-on-windows-azure-web-sites-creating-a-blog-application.aspx