没有为网站或应用程序启用相应的mime映射_python django创建一个属于自己的动态网站...

0beefa92e616d1c7587e5e33e12116da.png

您如何开始使用Python创建网站?好吧,你可以自己完成所有工作,并编写一个在Web服务器上运行的程序,接受页面请求并以HTML和其他资源的形式提供响应。然而,这是很多工作,那么为什么在有大量现有工具为您完成工作时会遇到麻烦呢?这些工具称为框架,它们是我们今天用来创建我们网站的东西。

Python框架

有很多Python Web框架,但这里有一些最好的:

  • Django - 我们今天要用它。它具有大量功能,但仍然易于使用。文档也非常好,所以如果你遇到困难,你将有最简单的时间来解决你的Django问题。
  • Grok - 另一个具有接近Django的功能集的框架。如果你决定不喜欢Django,这是一个很好的选择。
  • WebPy - 一个更轻量级的框架。它没有那么多的功能,虽然它确实为Reddit供电了一段时间!
  • TurboGears - 虽然以前因文档不佳而声名远播,但TurboGears在去年已大幅改善。

如果您需要其他选项,可以在Python网站上找到 更全面的列表。今天我们将在本地机器上设置Django进行开发,然后构建一个简单的博客。我们还将审查在远程Web服务器上安装它的过程。

安装Django

我们今天将在终端中完成大部分工作。这应该都适用于Mac和Linux; 但是,如果您正在运行Windows,则该过程会有所不同。如果您只编写Python,则不需要熟悉命令行,但是,如果您计划使用Django,或者一般运行动态网站,那么值得学习。

以下是安装Django所需的命令。它与Python 3不兼容,因此您需要安装2.7或更早版本才能使其运行。

wget http://www.djangoproject.com/download/1.3.1/tarball/

tar xzvf Django-1.3.1.tar.gz

cd Django-1.3.1

python setup.py install

接下来,我们可以选择删除安装文件。

cd ..

rm Django-1.3.1.tar.gz

应该这样做!我们来试试吧。

python

from django import get_version

get_version()

你应该看到'1.3.1'。如果你这样做,一切正常,Django安装在你的系统上。恭喜!我们准备开始创建我们的网站了!

建立我们的博客

我们今天要建立一个博客系统,因为它是学习基础知识的绝佳方式。首先,我们需要创建一个Django项目。

cd ~/Documents/Projects

django-admin.py startproject FirstBlog

cd FirstBlog

ls

每个这些文件做什么?

  • __init__.py告诉Python这个文件夹是一个Python包。我们在第三课中了解了这些; 它允许Python将文件夹中的所有脚本作为模块导入。
  • manage.py实际上并不是您网站的一部分; 它是一个从命令行运行的实用程序脚本。它包含一系列用于管理站点的功能。
  • settings.py包含您网站的设置。Django不使用XML文件进行配置; 一切都是Python。此文件只是一些定义站点设置的变量。
  • urls.py是将URL映射到页面的文件。例如,它可以将yourwebsite.com/about映射到“ 关于我们”页面。

Django称自己是一个MTV框架,代表模板模板视图。

应用

但是,这些文件中没有一个是自己创建的功能性网站。为此,我们需要应用程序。应用程序是您编写使您的网站运行的代码的地方,但在我们查看它们之前,我们需要了解Django的设计原则。

首先,Django是一个MVC框架,代表模型视图控制器。Django称自己是一个MTV框架,代表模板模板视图。这与MVC略有不同,但从根本上说,它们非常相似。无论如何,MVC是一种架构模式,它提供了一种构建项目的方法。它将用于处理数据的代码与管理用户界面的代码分开。

Django订阅DRY,或“不要重复自己”的理念。

其次,Django订阅了DRY,或者不重复自己的哲学,这意味着你永远不应该编写不止一次执行某项任务的代码。例如,在我们的博客中,如果我们编写了一个从存档中选择随机文章的功能,并在多个页面上实现了此功能,那么每次需要时我们都不会再对其进行编码。我们将其编码一次,然后在每个页面上使用它。

那么这与应用程序有何关系?那么,应用程序允许您以干燥的方式编写您的网站。每个项目(如我们这里的项目)都可以包含多个应用程序。相反,每个应用程序都可以是多个项目的一部分。使用前面的示例,这意味着如果我们将来创建另一个还需要随机页面功能的网站,我们就不必再将其全部写入。我们可以从这个项目中导入应用程序。因此,每个应用程序都有一个不同的用途,这一点非常重要。如果您在一个应用程序中编写了站点的所有功能,然后需要稍后再使用它的一部分,则必须全部导入。例如,如果您正在制作电子商务网站,则不希望导入所有博客功能。但是,如果您为随机功能创建一个应用程序,为博客发布系统创建一个应用程序,

这也意味着在站点内,代码组织得很好。如果要更改某个功能,则不必搜索一个大型文件; 您可以改为浏览相关应用并进行更改,而无需担心干扰其他任何内容。

python mangage.py startapp blog

cd blog

ls

同样,我们有一个__init__.py文件使它成为一个包,还有另外三个文件:模型,测试和视图。我们现在不需要担心测试,但其他两个很重要。模型和视图是M和VMVC的部分。

在模型中,我们定义了数据结构。

如果您曾经使用过PHP,那么您可能已经使用PhpMyAdmin来创建MySQL表,然后在PHP脚本中手动编写SQL查询。在Django中,它更容易。我们在这个模型文件中定义了我们需要的所有数据结构,然后运行一个命令,并为我们制作了所有必要的数据库。

当您希望访问该数据时,可以通过调用方法来访问这些模型,而不是运行原始查询。这非常有用,因为Django可以使用多个数据库程序。我们今天将使用MySQL,因为它是最强大的,并且是大多数主机提供的,但如果我们将来需要切换到不同的数据库,所有代码仍然有效!在其他语言中,如果要切换到SQLite或类似的东西,则需要重写访问数据库的代码。

在视图文件中,我们编写实际生成网页的代码。这将所有其他部分联系在一起。当用户键入URL时,它由urls我们之前看到的脚本发送到views脚本,脚本然后从模型中获取相关数据,处理它并将其传递到模板中,最终将其作为用户看到的页面提供。 。我们很快就会看一下这些模板。它们是最容易的部分 - 主要是HTML。

对于博客,我们需要一个帖子表,其中包含标题,正文,作者,写作时间等几个字段。一个真正的博客会有评论,但这超出了今天的演示范围。

from django.db import models

class posts(models.Model):

author = models.CharField(max_length = 30)

title = models.CharField(max_length = 100)

bodytext = models.TextField()

timestamp = models.DateTimeField()

MySQL的

这些模型只是一个描述。我们需要从中创建一个实际的数据库。首先,我们需要在我们的系统上运行MySQL。在实际的Web服务器上,这不是问题,因为它们通常会预先安装它。幸运的是,使用包管理器,它很容易安装。首先,您需要安装Homebrew和Easy Install

brew install mysql

easy_install mysql-python

mysqld_safe --skip-grant-tables #let anyone have full permissions

mysql -u root

UPDATE mysql.user SET Password=PASSWORD('nettuts') WHERE User='root'; #give the user 'root' a password

FLUSH PRIVILEGES;

mysql -u root -p #log in with our password 'nettuts'

CREATE DATABASE firstblog;

quit

python2.6 manage.py runserver

当您重新启动时,MySQL将不会运行,因此每次您需要在将来执行此操作时,请运行mysqld以启动服务器。然后python2.6 manange.py runserver,您可以在新选项卡中运行以启动开发服务器。

此命令不会运行服务器,它只会返回错误。那是因为我们需要配置我们的设置。我们来看看吧settings.py。

您需要先更改数据库设置。这些从第12行开始。

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.

'NAME': 'firstblog', # Or path to database file if using sqlite3.

'USER': 'root', # Not used with sqlite3.

'PASSWORD': 'nettuts', # Not used with sqlite3.

'HOST': '', # Set to empty string for localhost. Not used with sqlite3.

'PORT': '', # Set to empty string for default. Not used with sqlite3.

}

}

如果您尝试再次运行服务器,它应该可以工作,只要您成功安装了MySQL。如果您127.0.0.1:8000在Web浏览器中访问,则应该会看到默认的Django页面。

现在让我们将我们的Django网站变成一个博客。首先,我们需要使用我们的模型通过运行以下命令在数据库中创建表:

python2.6 manage.py syncdb

每次更改模型时,都应运行此命令以更新数据库。请注意,这不能改变现有字段; 它可能只会添加新的。因此,如果要删除字段,则必须使用PhpMyAdmin等手动执行此操作。因为这是我们第一次运行该命令,所以Django将为管理系统之类的东西设置所有默认的内置表。只需输入“是”,然后填写您的详细信息。

现在让我们设置urls.py文件。取消注释示例部分中的第一行,并将其更改为say url(r'^$', 'FirstBlog.blog.views.home', name='home') 。

现在,让我们创建视图文件来响应这些请求。

from django.shortcuts import render_to_response

from blog.models import posts

def home(request):

return render_to_response('index.html')

模板

这个index.html文件还不存在,所以让我们来做吧。在blog应用程序中创建一个名为templates的文件夹,并在其中保存一个名为的文件index.html,暂时只能包含“Hello World”。然后,我们需要编辑设置文件,以便Django知道此模板的位置。

第105行是用于声明模板文件夹的部分的开始位置; 所以调整它,如下:

TEMPLATE_DIRS = (

"blog/templates

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值