django基础

3.1测试你的配置

测试你的python版本和你的django版本是否兼容

3.2新建django工程

在dos里面进到你事先新建的code文件夹,然后在执行下列命令新建工程

c:\python27\scripts\django-admin.py startproject tango_with_django_project

新建完工程之后,你会在tango_with_django_project 文件夹里面看到另外两项

。。。。另一个相同名字的文件夹tango_with_django_project

。。。。一个python脚本manage.py

你会在tango_with_django_project/tango_with_django_project下面看到4个文件

__init__一个空的python脚本,告诉python编译器,这个文件夹是一个python包

settings.py放置django工程所有的配置

urls.py储存你的工程的URL形式

wsgi.py用来帮助运行你的开发服务器,发布你的项目到产品环境上

note:虽然两个一样名字的文件夹看起来有点奇怪,但是创建独立的应用的时候,变化就会发生了

在工程文件夹里面有一个叫做manage.py的文件。在开发过程中你会经常使用到他。

现在使用下面这条命令,前提你已经进到你的工程文件夹的根目录下面,输入

python manage.py runserver

执行这条命令之后,你会开启django自己的一个轻量的服务器。你会在你的terminal里面看见下面所示的信息

现在打开浏览器,输入http://127.0.0.1:8000/,你会看到下面所示的

你可以在dos里面使用ctrl+c停止服务器

如果你希望运行服务器在别的端口,或者允许其他的用户从另外的机器上进去你的网站,你可以使用下面的命令:

python manage.py runserver <your_machines_ip_address>:5555

同样你需要将上面的127.0.0.1换成你自己的ip地址

设置端口的时候,你不止可以使用默认的TCP80端口作为HTTP的传输端口。1024以下的端口你的系统都可以使用

如果你不使用默认的服务器去发布你的应用的话,因为有时你同事可能也想看你的应用。你可以在他电脑上输入http:<your_machines_ip_address>;port,就可以查看你的应用了。当然这也取决你们的网络布局

note:djangp-admin.py和manage.py脚本提供了很多有用又省时的功能。django-admin.py可以新建工程和新建应用。你可以在official Django documentation provides a detailed list and explanation of each possible command查看每条命令具体的含义

3.3 新建django应用

一个django工程就是配置文件和应用文件夹的集合组成了一个web应用或者说是一个网站。创建独立的应用,就可以避免重复的造轮子

一个django应用就对应一个特殊的任务。你需要为你的网站创建不同功能的应用。例如,一个网站可能包括有投票应用、注册应用、还有特殊的内容关联应用。在另一个工程里,我们可能希望重复使用这些应用。

现在开始创建一个Rango应用,在你的工程根目录下面(tango_with_django_project),运行下面的命令

python manage.py startapp rango

上面这条命令新建了一个名叫rango的文件夹,里面有4个文件

另一个__init__文件,跟之前的作用一样

models.py,为了存放你的应用的数据模型-也就是你的实体和数据之间的关系

tests.py,存放测验你的应用的函数

views.py处理客户端请求并响应

models.py和views.py,你会经常使用,符合django的model-view-template

在你创建你自己的数据模型(models)和视图(views)之前,你需要先告诉你的django工程这个应用的存在,修改settings.py文件,找到INSTALLED_APPS元组,添加rango应用到元组末尾,如下图

运行服务器,看看有没错

3.4新建视图

新建rango应用之后,我们来新建一个简单的视图。在我们的第一个视图里面,仅仅只发送一些简单的文字到客户端,先还不考虑models和template

打开rango应用下面的views.py文件,添加如下代码

from django.http import HttpResponse

def index(request):

  return HttpResponse("Rango says helo world!")

上面这个几段代码有这样几个知识点:

。。。我们第一次从django.http模块导入HttpResponse

。。。每一个视图都是以独立的函数存在于views.py里,我们只创建了一个视图index

。。。每一个视图都至少需要一个变量-一个HttpRequest对象,也是django.http模块里的。

。。。每一个视图都必须返回一个HttpResponse对象。

view创建好之后,你只是提供了一个给用户进入的通道。为了让用户看见你的视图,你必须映射一个URL给视图

3.5映射URLS

在rangp文件夹下面新建一个urls.py文件,这个文件里的内容就是为了能让URLs映射到对应的视图。对照下面的urls.py文件

from django.conf.urls import patterns,url

from rango import views

urlpatterns = patterns('',

url(r'^$',views.index,name='index')

)

这段代码里面导入rango/view.py,可以提供更精确的URL指向

我们在urlpatterns元组里面创建映射每一个调用都只处理一个唯一的映射。在上面的代码里面,我们只使用了一次url(),因此我们只定义了一次url映射。我们提供给django.conf.urls.url()函数的第一个参数是通用的表达式^$,匹配一个空字符串。任何一个链接满足这样的形式的都可以访问views.index()。这个视图会传递一个HttpRequest对象作为参数,里面包含了用户传递给服务器的信息。里面的name是可选参数

你可能已经发现了,在你的工程配置文件夹里面已经有一个urls.py文件了,为什么又要另建一个?技术上说,你能将你工程应用所有的URL都放在这里面。然而,但是随着你的应用增多,这并不是一个好的体验。独立的应用有一个独立的uel文件,最后你也可以将它们全都集中在你的主urls.py文件里面。

这也就是说我们得配置工程下面的urls.py文件,使主工程和我们的rango应用链接起来

怎么做呢?打开tango_with_django_project/tango_with_django_project/urls.py.像下面这样更新代码

urlpatterns = patterns('',

#Examples:

#url(r'^$','tango_with_django_project.views.home',name='home'),

#url(r'^tango_with_django_project/',include('tango_with_django_project.foo.urls')),

#Uncomment the admin/doc line below to enable admin documentation:

#url(r'^admin/doc/',include('django.contrib.admindocs.urls')),

#Uncomment the next line to enable the admin:

#url(r'^admin/',include(admin.site.urls)),

url(r'^rango/',include('rango.urls')),

)

新添加的映射匹配^rango/的url字符串。一匹配就转交给rango.urls处理,这是inlude()实现的。就像下面的这个链接一样。一层一层的往下找。最后找到rango下面的urls.py,当输入的URL的地址匹配空字符串,就调用我们创建的index()视图

重启服务器,访问http://127.0.0.1:8000/rango.要是操作没错的话,就会出现下面的效果

3.6基本的工作流

3.6.1创建一个新的应用

python django-admin.py startproject <name>

3.6.2创建一个新的django 应用

1.python manage.py startap <appname>

2.在INSTALLED_APPS里面注册你刚刚新建的app

3.在你工程文件下面的urls.py里面,创建一个到你刚新建的应用的映射

4.在你的应用的文件夹里面,新建一个urls.py映射视图

5.在你们应用文件夹里面的view.py,新建一个要求的视图,并能够返回一个HttpResponse对象

3.7练习

3.7.1提示

【翻译】How To Tango With Django 1.5.4 第三章的更多相关文章

  1. 【翻译】How To Tango With Django 1.5.4 第五章

    5数据模型和数据库 一个模型就是一个描述你数据表的python对象.不用再通过SQL来操作数据库,而是使用python对象来操作数据库. 5.1rango要求 ...一个目录下面有多个下面 ...一个 ...

  2. 《Django By Example》第三章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:第三章滚烫出炉,大家请不要吐槽文中 ...

  3. 【翻译】How To Tango With Django 1.5.4 第四章

    4.模板和静态媒体 这章讲解模板引擎 4.1使用模板 前面我们讲解了view和url 映射,创建出了django 的web页面,现在就要将模板混合进去 好的网站在布局上总是有许多重复的.django提 ...

  4. 《Django By Example》第六章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:无他,祝大家年会都中奖!) 第六章 ...

  5. 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...

  6. Tango with Django 1.9 中文——1.概述

    译者注:英文书地址https://leanpub.com/tangowithdjango19/,作者为Leif Azzopardi 和 David Maxwell.本文仅为尝试.学习和交流,著作权利归 ...

  7. 《Entity Framework 6 Recipes》中文翻译系列 (11) -----第三章 查询之异步查询

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第三章 查询 前一章,我们展示了常见数据库场景的建模方式,本章将向你展示如何查询实体 ...

  8. 《Entity Framework 6 Recipes》中文翻译系列 (19) -----第三章 查询之使用位操作和多属性连接(join)

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 3-16  过滤中使用位操作 问题 你想在查询的过滤条件中使用位操作. 解决方案 假 ...

  9. Django搭建博客网站(三)

    Django搭建博客网站(三) 第三篇主要记录view层的逻辑和template. Django搭建博客网站(一) Django搭建博客网站(二) 结构 网站结构决定我要实现什么view. 我主要要用 ...

随机推荐

  1. OpenCV 第二课 认识图像的存储结构

    OpenCV 第二课 认识图像的存储结构 Mat Mat 类包含两部分,矩阵头和矩阵体.矩阵头包含矩阵的大小,存储方式和矩阵体存储空间的指针.因此,Mat中矩阵头的大小是固定的,矩阵体大小是不定的. ...

  2. zookeeper清除日志文件工具

    zookeeper运行时间长了以后,日志会成为一个比较大的问题.比如作者压力测试hbase一周以后,zookeeper日志文件达到了10G的规模.由于zookeeper日志文件不能随意删除,因为一个长 ...

  3. Linux 启动项介绍

    1. init进程 非内核进程中第一个被启动运行的,因此它的进程编号PID的值总是1.init读它的配置文件/etc/inittab,决定需要启动的运行级别(Runlevel,分别由0到6的整数表示) ...

  4. hdu 2160 母猪的故事

    Problem Description 话说现在猪肉价格这么贵,著名的ACBoy 0068 也开始了养猪生活.说来也奇怪,他养的猪一出生第二天开始就能每天中午生一只小猪,而且生下来的竟然都是母猪.不过 ...

  5. 20145308刘昊阳 《Java程序设计》第8周学习总结

    20145308刘昊阳 <Java程序设计>第8周学习总结 教材学习内容总结 第15章 通用API 15.1 日志 15.1.1 日志API简介 java.util.loggging包提供 ...

  6. 'libxml/HTMLparser.h' file not found in ASIHTTPRequest 解决方法

    首先导入libxml2.dylib,具体怎么导入跟导入frameworks一样 然后在Build Setting中的Header Search Paths to: 添加 ${SDK_DIR}/usr/ ...

  7. 【BZOJ】3834: [Poi2014]Solar Panels

    http://www.lydsy.com/JudgeOnline/problem.php?id=3834 题意:求$max\{(i,j)\}, smin<=i<=smax, wmin< ...

  8. Java_Java Compiler 应用实例

    转自:http://hejiangtao.iteye.com/blog/1399122 一直在用JDK1.5, 一直搞不清楚JDK1.6有啥特性, 就翻了翻, 发现这个Compiler API(JSR ...

  9. 记录JVM内存模型,参数含义和优化

    一.JVM内存模型 (图片来自网络) 根据Java虚拟机规范,JVM将内存划分为: New(年轻代) Tenured(年老代) Perm (永久代) 其中New和Tenured属于堆内存,堆内存会从J ...

  10. unity3d插件Daikon Forge GUI 中文教程3-基础控件Button和Sprite的使用

    2.2添加一个按钮Button 来看看特有的属性:Button Properties Data 显示的文本 Behavior 中的几个: Aoto Size 选中时就是按钮的背景会根据Data中的文本 ...