我的django之旅(一)

标签(空格分隔):django web


1.检验我们的python和django版本

liao@spring ~ $ python --version
Python 2.7.6

(venv)liao@spring ~/PUBLIC/Django/Rango $ python -c "import django; print(django.get_version())"

1.7


2.创建一个django项目

django-admin.py startproject (your project name)

ps:注意,括号中的是我们的项目名称。

通过这条语句,我们创建了一个项目,让我们看看里面都有些什么吧。一个和项目名一样的文件夹,一个名为manage.py(非常重要)的文件。在我们的开发和测试过程中,它将始终伴随我们。那么让它跑起来吧,我们已经创建了一个简单的django项目。

python manage.py runserver

很遗憾,我们将会看到一些错误提示,尽管我们已经能够运行了。

点击测试吧!!!

振奋人心,我们将会在浏览器上看到这个项目已经跑起来了,虽然什么都么有

It worked!

Congratulations on your first Django-powered page.

不过还是有些错误等着我们解决

You have unapplied migrations; your app may not work properly until they are applied.

Run 'python manage.py migrate' to apply them.

不过照着第二句话做就好了

python manage.py migrate

3.Application的概念

app是django中非常重要的一个概念,每个应用负责完成一些特别的任务。一个项目之中可以有多个应用,本着不重复发明轮子的原则,一个好的应用可以被拿到其他django项目之中继续使用。

python manage.py startapp app_name

这时候就创建好了一个app,但是还没完。既然app是像插件一样的存在,那我们应该再项目中“注册”这个app。

进入到我们的project目录,我们会看到如下的文件

├── init.py

├── init.pyc

├── settings.py

├── settings.pyc

├── urls.py

├── urls.pyc

├── wsgi.py

└── wsgi.pyc

打开settings.py文件,找到

INSTALLED_APPS = (

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'rango'

)

顾名思义,这是一个app的配置文件,在这个python元组的最后添加我们自己的app,比如我的就是rango

4.创建视图

进入我们的app目录

.

├── admin.py

├── init.py

├── migrations

│   └── init.py

├── models.py

├── tests.py

└── views.py

django还真是贴心,所有的文件都给我们创建好了,像是flask这种微框架,什么事都得亲力亲为。使用我们最喜爱的编辑器,sublime text3 来打开views.py

ps:关于linuxmint下sublime text3的安装

打开http://www.sublimetext.com/3,下载Ubuntu64bit那个,安装即可。

添加如下代码

from django.http import HttpResponse
def index(request):
return HttpResponse("Hello world!")

虽然只短短三行代码,却是意味深长。

第一行,从django.http中引入了HttpResponse,通常情况下它的功能是向页面传输信息,例如传送一个字符串。

第二行,每个视图views.py都包含了许多的视图函数,这里我们只创建了一个index,当我们执行一个操作,点击一个url,提交一个表单等等,都会用到相应的视图函数,视图函数处理完成之后,在将数据返回到页面上。

第三行,没什么说的,返回一个字符串到页面上。

5.创建url

何谓url,Uniform ResoureLocator:统一资源定位器。虽然我们创建了一个视图函数,

但是如何调用他呢?这就需要用到url去mapping这个函数了

(1)创建一个urls.py

在我们的应用中新建文件urls.py

from django.conf.urls import patterns,url
from rango import views
urlpatterns=patterns(' ',url(r'^$',views.index,name='index'))

注意第三行,使用到了正则表达式,$表示匹配一个空字符串,(开头),$(结尾)

ps:相较于flask使用修饰器作为路由,这个简直太麻烦。

(2)修改项目中的urls.py

每个应用都有一个urls.py文件,但是当我们的应用越来越多时,很有可能,我们会使用相同的url。就需要再项目的中urls.py中添加下面这行,将每个独立的应用的url区分开来

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

这样的话,如果我们要访问rango这个应用中的url,就需要加上rango前缀,在我的机器上就是这样

http://127.0.0.1:8000/rango

不出意外,我们将会看到一个hello world 字符串。

一个最最简单的django项目就此诞生了,除了没有连接数据库,没有使用模板,几乎囊括了django开发的基本流程。

当然,如果服务停止了的话,要重启服务

python manage.py runserver

6.阶段总结,基本工作流程

(1)新建django项目

python django-admin.py startproject <name>

(2)应用

  • 新建应用

      python manage.py startapp <appname>
  • 在项目的settings.py中添加我们的新app

  • 在urls.py文件中添加对于app的映射

  • 在我们的app文件夹中新建urls.py文件,添加对于视图函数的映射

  • 在veiws.py文件中添加视图函数,记得返回数据。现阶段我们使用HttpReponse去返回一个字符串,将来我们会使用渲染模板的方式。

我的django之旅(一)的更多相关文章

  1. 我的django之旅(三)数据库和模型

    我的django之旅(三)模型和数据库 标签(空格分隔):模型 数据库 ORM 1.django ORM django内置了一套完整的解决方案,其中就包括他自己的ORM.可惜没有使用SQLAlchem ...

  2. 我的django之旅(二)模板和静态文件

    我的django之旅(二)模板和静态文件 标签(空格分隔): django 1.为什么要使用模板 在上一篇博文中,提到了HttpReponse,但是HttpReponse只能传送字符串,如果要构建一个 ...

  3. 第一篇:开始进入 django 之旅

    文中所有示例代码的仓库地址:https://github.com/HelloGitHub-Team/HelloDjango-blog-tutorial 开发环境说明 本教程写作时开发环境的系统平台为 ...

  4. 我的django之旅(四)模型,模板和视图

    一.结合模型,视图和模板 1.数据和模板结合 基本工作流程: (1)在views.py文件中导入我们创建的models (2)在视图函数中使用models,进行crud操作. (3)将取得的数据存入t ...

  5. ECS部署Django之旅

    引言: 在完成了一个基于Django的博客系统后,我目前着手将我的博客系统部署到阿里云的ECS服务器上. 之所以选择云服务器,在我还在lab的时候,还是学生所以比较便宜一年100软妹币的样子,性价比极 ...

  6. 开始Django之旅

    MTV 与 MVC 模型 1.MVC模型 Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为 模型(M) ,控制器(C) 和 视图(V) 三层,他们之间以一种插件式的.松耦合的方式 ...

  7. Python之路【第十六篇】Django基础

    Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...

  8. Django环境安装--Django从入门到精通系列教程

    该系列教程系个人原创,并完整发布在个人官网刘江的博客和教程 所有转载本文者,需在顶部显著位置注明原作者及www.liujiangblog.com官网地址. Python及Django学习QQ群:453 ...

  9. python之路 django基础

    Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...

随机推荐

  1. [Leetcode] Remove Duplicates From Sorted Array II (C++)

    题目: Follow up for "Remove Duplicates":What if duplicates are allowed at most twice? For ex ...

  2. window.open() | close()方法

    Window对象的open()方法可以打开一个新的浏览器窗口(或标签页),window.open()载入指定的URL到新的或已存在的窗口中,返回代表那个窗口的window对象,它有4个可选的参数 1. ...

  3. 慕课linux学习笔记(四)常用命令(1)

    Root 表示当前登录用户 Localhost 主机名 ~ 当前所在位置(~表示/root) # 超级用户 $ 普通用户 命令 1.pwd 显示当前所在位置 2.ls 查询目录中的内容 -a 显示所有 ...

  4. chart.js 示例

    一个简单的例子. 1.html代码 <div id="pie" style="width: 250px;float:left"> <h3> ...

  5. lnmp 60秒的服务器缓存时间

    1.问题 php代码写好之后执行发现居然没有生效,打断点,改代码.刷新都没有达到预期的效果.但是间隔60秒之后刷新就看到效果了,或者删除文件就里面见效. 2.原因 从phpinfo()页面输出搜索&q ...

  6. phpmyadmin开启远程服务器连接

     1.修改 braries/config.default.php,将 $cfg['AllowArbitraryServer'] 的值由 false 改成 true. 2.有其他需求的也可以自己在这里修 ...

  7. python小程序之并发连接

    import threading import socket import time def conn(): cli = socket.socket() cli.connect(("58.6 ...

  8. 云风:我所偏爱的C语言面向对象编程范式

    面向对象编程不是银弹.大部分场合,我对面向对象的使用非常谨慎,能不用则不用.相关的讨论就不展开了. 但是,某些场合下,采用面向对象的确是比较好的方案.比如 UI 框架,又比如 3d 渲染引擎中的场景管 ...

  9. Codeforces 577B Modulo Sum

    http://codeforces.com/problemset/problem/577/B 题意:有n个数,求有无一个子序列满足和是m的倍数 思路:用模下的背包做,发现n是十的六次方级别,但是有个神 ...

  10. WPF利用Image实现图片按钮

    之前有一篇文章也是采用了Image实现的图片按钮,不过时间太久远了,忘记了地址.好吧,这里我进行了进一步的改进,原来的文章中需要设置4张图片,分别为可用时,鼠标悬浮时,按钮按下时,按钮不可用时的图片, ...