`
yangjizhong24
  • 浏览: 399649 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

windows下创建你的第一个Django应用

阅读更多

    本来哥们一直用PYTHON作为脚本工具来快速开发的,方便与否就不多修饰了,简直就是NB嘛,不过..这几天遇到个问题,就是要把一些内容“展示”出来给非编程人员看,这就让我有点郁闷了,的确总不能让人家登陆服务器然后运行脚本看结果吧,于是乎打算玩玩django,它的作用这里不多说了,本文内容主要是如何建立一个Django应用。

 

    PS:此篇仅是个开始,估计下一篇应该是如何在apache下运行django吧,具体我现在还不清楚呢,等哥们调研完了再写哈,或者大家有好文章推荐给我最好了。。一起学习一起分享

 

本文主要参考了IBM的基于 Django 框架的敏捷 Web 开发一文:http://www.ibm.com/developerworks/cn/opensource/os-cn-django/index.html、和官方文档:http://docs.djangoproject.com/en/dev/intro/tutorial01/

 

我的python:2.5版本的,django目前最新:1.2.4,环境:windows,db:mysql

 

 

好啦开始说了:

 

一.首先从官方网站下载Django包

 

     解压后进入Django目录,在命令行里执行python setup.py install,这样Django就会作为第三方模块被安装在Python的site-packages目录中,然后把Django中bin目录的路径添加到环境变量path里面,这样在命令行里就可以方便的使用Django提供的各种指令。本应用实例将创建实现一个新闻公告牌,用户可以从后台添加新闻分类和条目,然后在前端页面中显示新闻的统计信息。

 

 

二。新建你的APP

 

打开命令提示符,进入到想要创建应用的目录,键入django-admin.py startproject news命令,调用Django的控制台命令新建一个名为news的工程,与此同时Django还在新创建的news文件夹下生成以下四个分工不同的文件。

  • __init__.py
    文件__init__.py可以向Python编译器表明当前文件夹下的内容是Python工程模块。
  • 2.manage.py
    manage.py是Python脚本文件,与Django的命令行工具django-admin.py配合,可以对建立的工程进行管理配置。
  • settings.py
    这是Django工程的配置文件,与工程相关的工程模块和数据库全局配置信息都在settings.py中设置。
  • urls.py
    文件urls.py负责配置URL的地址映射以及管理URL的地址格式。

三。看看效果

 

键入命令manage.py runserver,就可以启动Web服务器来测试新建立的工程,如果启动没有错误,将可以看到下面这样的提示信息:“Development server is running at http://127.0.0.1:8000/” 表示当前工程已经可以通过本机的8000端口访问。在命令行里使用Ctrl+Break或Ctrl+C的组合键可以停止runserver命令启动的Web服务器。当然,Django自带的Web服务器一般只是在开发测试的过程中使用,真正部署使用的时候要用到APACHE了,这里不讲解哈,稍等。。。不同的端口下运行命令:python manage.py runserver 8080

 

 

四。编写Django的应用

 

接下来就可以编写Django的应用模块。键入命令python manage.py startapp article,命令会在当前工程下生成一个名为article的模块,目录下除了标识Python模块的__init__.py文件,还有额外的两个文件models.py和views.py。

在当前的工程中,需要有两个Models模型,分别对应List表和Item表,用来存储新闻的分类和新闻的条目,每个Item项都会有一个外键来标记文章的归属分类。下面打开Django创建的models.py文件,按照文件注释中提示的模块添加位置,编写如下的代码:

 

from django.db import models
import datetime 

class List(models.Model): 
	title = models.CharField(max_length=250, unique=True) 
	def __str__(self): 
		return self.title 
	class Meta: 
		ordering = ['title'] 
	class Admin: 
		pass 
class Item(models.Model): 
	title = models.CharField(max_length=250) 
	created_date = models.DateTimeField(default=datetime.datetime.now) 
	completed = models.BooleanField(default=False) 
	article_list = models.ForeignKey(List) 
	def __str__(self): 
		return self.title 
	class Meta: 
		ordering = ['-created_date', 'title'] 
	class Admin: 
		pass 

 

 

这里需要说明一下:

 

上面这段Python代码定义了存储新闻分类的List数据表,上述模型中的定义会被Django转换成与数据库直接交互的结构化查询语言来建立数据表,即创建一个名为List的表格,表格内的两个字段分别是Django自动生成的整型主键id和最大宽度为250个字符的VARCHAR类型字段title,并且在title字段上定义了唯一性约束,来保证新闻分类不会有完全相同的名称。

在List类文件里还定义了函数__str__(),作用是返回self字符串表示的title字段。而在类Meta中,设置了List表格按照title字母顺序的排序方式。在类Admin的设置中,允许Django针对当前的Models模型自动生成Django超级用户的后台管理入口,关键词pass设定Django将按照默认方式生成后台管理界面。在记录排序的ordering设置中,符号“-”表示按照日期的倒序进行排列,如果文章创建日期相同,则再按照title的字母序正序排列。

到此为止,应用中模型部分需要定义的两个数据表都已经创建完毕,下一步的工作是让Django部署并在数据库中生成已经写好的Models模型。

 

 

五。django模块的部署

 

在Django中,与工程全局相关的设置都需要在配置文件settings.py中添加。笔者使用MySQL作为后台数据库,并且已经在MySQL中创建名为django_news的数据库。则需要在settings.py文件中的相应位置设定DATABASE_ENGINE = "mysql" 以及 DATABASE_NAME = "django_news"。

在使用MySQL数据库时,需要额外安装MySQL的Python链接库MySQLdb,这个模块可以在站点http://sourceforge.net/projects/mysql-python/下载,注意:一定下载的包与你的python版本和mysql版本相适合

接下来的DATABASE_USER和DATABASE_PASSWORD两项内容则需要用户根据本机设置填写访问数据库的用户名和密码。如果数据库安装在其他机器上或者更改了数据库的监听端口,则还需要设置DATABASE_HOST地址和DATABASE_PORT项:

 

DATABASE_USER = 'django' 
DATABASE_PASSWORD = 'django_password'

 

为了使Django识别开发者添加的应用模块,在settings.py文件的INSTALLED_APPS部分中,需要定义Django工程加载的应用列表。默认情况下,列表中已经添加了Django工程运行所需的部分自带模块,我们还需要把刚才编写好的应用模块news.article加入其中,同时添加Django自带的django.contrib.admin应用模块,修改好的代码如下所示:


INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.admin',
    'news.article'
)

添加admin模块后还不能立即使用Django的admin后台管理界面,需要打开News工程根目录下的urls.py文件,将“# Uncomment this for admin:”后面的#注释去掉,使得Django针对管理界面的URL转向“ (r'^admin/', include(admin.site.urls)),”可用,这样访问admin模块时Django就可以顺利解析访问地址并转向后台管理界面。

 

当配置文件的改动完成之后,就可以在News工程的命令提示符下执行manage.py syncdb指令。Django会根据模型的定义自动完成ORM的数据库映射工作,屏蔽了底层数据库细节和SQL查询的编写。(帮你把table,映射都建立完成)

 

展示Django魅力的时刻已经来临,Django框架将让开发者开始神奇的体验。随着命令执行后的滚动提示,Django已经根据我们刚才在models里定义的映射文件,自动在数据库里创建好对应的表和字段。命令执行的同时会提示用户创建“superuser"账户,来登陆Django自动创建好的后台管理界面对模型进行管理。

 

再次使用命令manage.py runserver来启动Django自带的Web服务器后,在浏览器中访问地址http://127.0.0.1:8000/admin/,使用刚才创建的superuser用户的账号和密码登陆,如图3所示漂亮的Django后台管理界面就出现在眼前。


 

 

注意:如果你此刻未看见article标签及items和lists,那么需要在news目录下建立admin.py文件,里面内容:

 

from article.models import List
from article.models import Item
from django.contrib import admin

admin.site.register(List)
admin.site.register(Item)

 

就哦了。

 

在admin管理界面中,显示了应用中已经定义的各个models模块,当点击查看时,则会显示models中存在的数据库对象列表。Django提供的后台管理界面方便用户直接更改或添加数据库字段,下面我们点击"Lists"项旁边的“Add”来添加新的新闻分类。在title字段中键入“Sports News”或其他你喜欢的分类后保存。然后在"Items"项中点击“Add”,填入新闻的第一个条目,每个Item条目都对应List中的一个分类项,添加Item的界面如图4所示,由于设置了表之间的关联,Django的Item管理界面中会为已添加List分类自动生成内容的下拉选项。

 

六。实现Django的控制层和表现层

 

进行到这里,Django工程中的模型层已经处理完成,下面要做的就是如何用代码来与models中定义的字段进行交互,这就是Django中的View部分。与传统MVC分层定义略有不同的是,在Django中,View的功能是对页面请求进行响应和逻辑控制,而页面内容的表示则由Django的Template模板来完成。我们可以把Django的View理解为实现各种功能的Python函数,View负责接受URL配置文件urls.py中定义的URL转发并响应处理,当Django收到请求之后调用相应的View函数来完成功能,article模块中的views.py文件代码定义如下:

 

from django.shortcuts import render_to_response 
from news.article.models import List 

def news_report(request): 
 article_listing = [] 
 for article_list in List.objects.all(): 
   article_dict = {} 
   article_dict['news_object'] = article_list 
   article_dict['item_count'] = article_list.item_set.count() 
   article_dict['items_title'] = article_list.title
   article_dict['items_complete'] = article_list.item_set.filter(completed=True).count() 
   article_dict['percent_complete'] =
        int(float(article_dict['items_complete']) / article_dict['item_count'] * 100) 
   article_listing.append(article_dict) 
 return render_to_response('news_report.html', { 'article_listing': article_listing }) 

 

这是一段简洁的Python代码,让我们看看在这段代码里面Django的函数做了哪些工作吧:

  • List.objects.all方法返回news列表中所有的记录项,Django可以根据后台数据库转换成相应的SQL语句,在后台数据库中执行并返回查询结果。
  • 每一条article文章都有item_set属性,代表news新闻条目中的每一个item项。如果需要设置查询条件,也可以使用item_set.filter方法来返回符合特定要求的item项。
  • render_to_response函数返回浏览器指定的HTML页面,页面为Django的Template模板,负责展示被请求的页面内容。

在view部分的代码中,已经指定了页面显示模板为news_report.html。其实,在Django工程中创建模板是一件非常方便的事情,下面要在article目录内创建这个模板页面,首先新建一个名为templates的文件夹,然后在这个模板目录里创建所需的news_report.html模板文件,模板的代码如下:

 

                <html> 
 <head> 
   <meta http-equiv="Content-Type" content="text/html" /> 
   <title>新闻统计列表</title> 
 </head> 
 <body> 
   <h1>新闻统计列表</h1> 
{% for list_dict in article_listing %} 
   <ul> 
   	 <li>新闻的分类: {{ list_dict.items_title }}</li> 
     <li>新闻的数目: {{ list_dict.item_count }}</li> 
     <li>已发布的新闻数目: 
           {{ list_dict.items_complete }} ({{ list_dict.percent_complete }}%)</li> 
   </ul> 
{% endfor %} 
 </body> 
</html> 

 

 

一般来说,Django的模板代码和普通的HTML代码看上去没有太大差别,只是添加了Django特定的模板标记,这些标记允许开发者为Django模板添加页面逻辑,比方说将views.py中render_to_response函数返回的数据库结果集显示在页面中,Django特有的标签在模板页里以“{%”作为开始并以“%}”作为结束。嵌入Django模板的变量则以“{{”作为开始并以“}}”结束。

在上面的模板代码里面,用到了标记{% for news_dict in article_listing %}以及{% endfor %}。这样的标记告诉Django模板处理机制循环取出news中的item项输出在页面中,在for循环内部,通过article_listing的属性得到View中对应的数据项字段的值并显示每个news项的Title标题以及news中的item项数目。

当Django的View和Template都已经准备妥当,下面仅需要几步配置来告诉Django存储工程应用的模板位置,这需要对配置文件setting.py中的TEMPLATE_DIRS项进行设置。在本例中加入模板文件"news_report.html"的存储路径就可以让Django把对View进行处理的结果集通过指定模板返回。按照本例应用的结构,TEMPLATE_DIRS参数的内容设置为:

 

'./article/templates',

这里不要忘记Django需要在路径的最末尾添加一个逗号。接下来仅需要设置访问article时的URL转向地址就可以。打开urls.py文件,在admin后台管理的转向地址下一行添加如下语句:

 

(r'^report/$', 'news.article.views.news_report'),

在这里语段的最末尾,也需要有逗号标记段落的结束。在这里可以看到,Django的URL转发设计的非常简洁,在配置文件urls.py中对应于view的转发请求都由两部分组成,第一部分遵循正则表达式指定相匹配的URL地址,第二部分是对应在View里面处理转发请求的函数。

完成了这些步骤,就可以在命令提示符下再次启动Django服务器,看一下上述努力的成果了,在浏览器中打开链接http://127.0.0.1:8000/report/,将会看到新闻列表的返回界面。页面中显示了数据库中已添加所有新闻的分类统计信息。值得一提的是,Django模板支持多层嵌套,并且每一层都可以使用DIV+CSS方式完成布局,可以方便的让站点页面遵循统一风格,看起来美观大方。


 

  • 大小: 43.6 KB
分享到:
评论

相关推荐

    Windows下图文安装Django及WEB服务启动教程

    Django是纯Python代码编写的应用程序,因此第一步是安装Python。目前推荐使用的版本为Python 2.7.x,尽管Django也支持Python 3.x版本。可以在Python官方网站下载对应的安装包,并按照提示完成安装过程。 #### 四、...

    Django如何创建操作HTML.docx

    #### 四、利用 Django 创建第一个项目工程 1. **配置 settings.py 文件**: - 打开 `settings.py` 文件,并在 `INSTALLED_APPS` 列表中添加新创建的应用名称,例如 `'Test'`。 - 配置模板目录: ```python ...

    Atom-atom-django,使用atom更快地构建django应用程序。对Zacharytamas/Atom的贡献.zip

    标题"Atom-atom-django,使用atom更快地构建django应用程序"指出,这个项目或资源是关于如何使用Atom文本编辑器来高效地开发Django Web应用程序的。Atom是一个流行的开源文本编辑器,它允许开发者利用Web技术进行...

    django课件基础篇

    安装完成后,创建一个新的Django项目是第一步,这通常使用`django-admin startproject project_name`命令完成。接着,创建一个应用,如`python manage.py startapp app_name`,应用是项目中具有特定功能的部分。 ...

    python-django环境搭建

    Python Django环境搭建是一个重要的第一步,尤其对于初学者和开发者来说,它是构建基于Python的Web应用程序的基础。Django是一个高级的Python Web框架,它鼓励快速开发并遵循“干”(Don't Repeat Yourself)原则,...

    Django入门和安装环境+MYSQL

    3. **创建项目**: 安装完成后,可以创建第一个Django项目。在命令行中输入`django-admin startproject myproject`,其中"myproject"是你项目的名字。 4. **创建应用**: 在项目目录下,通过`python manage.py ...

    windows-服务器-Django-Apache2.4-mod-wsgi.7z

    在Windows环境中部署Django web应用通常涉及到多个组件...这个压缩包文件"windows-服务器-Django-Apache2.4-mod_wsgi.7z"应该包含了部署所需的全部组件和相关文档,方便用户在Windows服务器上快速搭建Django应用环境。

    Django2 By Example中文(1-5)_精排目录

    在本书的第一章中,首先介绍了Django的安装流程,适合那些尚未安装Django的读者。Django 2.x版本要求Python解释器为3.4或更高版本。推荐的Python版本为3.6.x。Python 3.6.5在本书中作为参考版本使用。在Linux或macOS...

    Django+Vue:Python Web全栈开发(基于Django4.1)

    Windows 下安装 Python 非常简单,去 Python 官方网站找到 Python 3 的下载地址,根据你的系统选择 32 位或者 64 位的安装包,下载好后双击安装即可。 第二步,安装django 强烈推荐在虚拟环境下进行 django 的开发...

    django1.4.3安装包

    1. **下载安装包**:你可以从Django的官方仓库或者第三方镜像站点下载Django 1.4.3的源代码压缩包,文件名为"Django-1.4.3"。 2. **解压文件**:使用解压工具(如7-Zip或WinRAR)打开下载的压缩包,并将其解压到你...

    python-Django(web框架).zip

    Python Django 是一个高级的Web应用框架,用于快速开发...安装完成后,可以创建一个新的Django项目和应用,开始编写你的Web应用。Django的官方文档是学习和解决问题的重要资源,应充分利用它来深入理解和掌握这个框架。

    bootstraps4 + django3 + python3.6 + Apache2.4

    在Windows 10环境下部署这个项目,首先需要安装Python 3.6,接着通过pip安装Django和所有必要的依赖。然后,创建并配置Apache虚拟主机,确保其指向Django项目的根目录。设置好WSGI配置后,Apache就能启动并运行...

    python & django 安装文件以及安装入门文件

    在 Django 中创建项目和应用是开始开发的第一步。使用 `django-admin startproject project_name` 创建项目,然后使用 `python manage.py startapp app_name` 创建应用。在配置好数据库连接后,可以使用 Django 的...

    Python库 | django_leaf-2.1.1-py2.py3-none-any.whl

    Django Leaf库可能是一个扩展了Django功能的第三方模块,通常包含了一些实用工具、视图、模型、模板标签或其他组件,帮助开发者更轻松地完成特定任务。由于没有提供更详细的信息,我们无法深入了解这个库的具体功能...

    使用python搭建Django应用程序步骤及版本冲突问题解决

    才能进入到搭建第一个Django应用程序很简单的操作,即在windows终端输入代码:复制代码 代码如下:1 django-admin.py startproject mysite即可,如:我是在我电脑的 E:\Python33\python_workspace 目录下面创建项目...

    Django step by step 1.0.2版.doc

    开始教程的第一个步骤通常是展示经典的"Hello, World!"程序,这是一个编程传统,标志着新语言或框架的学习之旅的开始。在这个教程中,作者指出,虽然Python本身相对容易上手,但Django作为一个强大的Web框架,初学...

    基于django,python 的销售管理系统,

    2. **丰富的库**:Python有大量现成的第三方库,如NumPy、Pandas用于数据分析,Django自身就是其中之一,这些库极大地扩展了Python的功能。 3. **跨平台**:Python可以在多种操作系统上运行,包括Windows、Linux和...

    django应用程式

    第一个Django应用(正在进行中) 简单的投票投票网页必需品安装了 &gt; = 3.x一步步克隆存储库在存储库目录中打开命令提示符使用命令: python -m venv myvenv创建您的venv 激活您的venv: Windows: .\myvenv\Scripts\...

    Django-2.2.tar.gz

    Django是Python编程语言中的一个流行Web框架,用于构建高效、可扩展的Web应用程序。Django 2.2是该框架的一个稳定版本,提供了一系列...记住,实践是学习的最佳方式,所以尝试创建你的第一个Django项目并不断探索吧!

Global site tag (gtag.js) - Google Analytics