Django视图与网址

Django中网址是写在 urls.py 文件中,用正则表达式对应 views.py 中的一个函数(或者generic类),我们用一个项目来演示。

下载本节所有源代码:

学习编程最好的办法就是动手敲代码,请按照教程做,本节很简单,不提供源代码了,动手开始吧!

一,首先,新建一个项目(project), 名称为 mysite


1

django-admin startproject mysite

备注:

1. 如果 django-admin 不行,请用 django-admin.py

2. 如果是在Linux是用源码安装的,或者用 pip 安装的,也是用  django-admin.py 命令

运行后,如果成功的话, 我们会看到如下的目录样式   (没有成功的请参见环境搭建一节):


1

2

3

4

5

6

7

mysite

├── manage.py

└── mysite

    ├── __init__.py

    ├── settings.py

    ├── urls.py

    └── wsgi.py

我们会发现执行命令后,新建了一个 mysite 目录,其中还有一个 mysite 目录,这个子目录 mysite 中是一些项目的设置settings.py 文件,总的urls配置文件 urls.py 以及部署服务器时用到的 wsgi.py 文件, __init__.py 是python包的目录结构必须的,与调用有关。

我们到外层那个 mysite 目录下(不是mysite中的mysite目录)

二, 新建一个应用(app), 名称叫 learn


1

python manage.py startapp learn # learn 是一个app的名称

我们可以看到mysite中多个一个 learn 文件夹,其中有以下文件。


1

2

3

4

5

6

learn/

├── __init__.py

├── admin.py

├── models.py

├── tests.py

└── views.py

注:Django 1.8.x 以上的,还有一个 migrations 文件夹。Django 1.9.x 还会在 Django 1.8 的基础上多出一个 apps.py 文件。但是这些都与本文无关。


把我们新定义的app加到settings.py中的INSTALL_APPS

修改 mysite/mysite/settings.py


1

2

3

4

5

6

7

8

9

10

INSTALLED_APPS = (

    ‘django.contrib.admin‘,

    ‘django.contrib.auth‘,

    ‘django.contrib.contenttypes‘,

    ‘django.contrib.sessions‘,

    ‘django.contrib.messages‘,

    ‘django.contrib.staticfiles‘,

    ‘learn‘,

)

备注,这一步是干什么呢? 新建的 app 如果不加到 INSTALL_APPS 中的话, django 就不能自动找到app中的模板文件(app-name/templates/下的文件)和静态文件(app-name/static/中的文件) , 后面你会学习到它们分别用来干什么.

定义视图函数(访问页面时的内容)

我们在learn这个目录中,把views.py打开,修改其中的源代码,改成下面的


1

2

3

4

5

#coding:utf-8

from django.http import HttpResponse

def index(request):

    return HttpResponse(u"欢迎光临 自强学堂!")

第一行是声明编码为utf-8, 因为我们在代码中用到了中文,如果不声明就报错.

第二行引入HttpResponse,它是用来向网页返回内容的,就像Python中的 print 一样,只不过 HttpResponse 是把内容显示到网页上。

我们定义了一个index()函数,第一个参数必须是 request,与网页发来的请求有关,request 变量里面包含getpost的内容,用户浏览器,系统等信息在里面(后面会讲,先了解一下就可以)。

函数返回了一个 HttpResponse 对象,可以经过一些处理,最终显示几个字到网页上。

那问题来了,我们访问什么网址才能看到刚才写的这个函数呢?怎么让网址和函数关联起来呢?

定义视图函数相关的URL(网址)  (即规定 访问什么网址对应什么内容)

我们打开 mysite/mysite/urls.py 这个文件, 修改其中的代码:

由于 Django 版本对 urls.py 进行了一些更改:

Django 1.7.x 及以下的同学可能看到的是这样的:


1

2

3

4

5

6

7

8

9

10

11

from django.conf.urls import patterns, include, url

from django.contrib import admin

admin.autodiscover()

urlpatterns = patterns(‘‘,

    url(r‘^$‘‘learn.views.index‘),  # new

    # url(r‘^blog/‘, include(‘blog.urls‘)),

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

)

Django 1.8.x及以上,Django 官方鼓励(或说要求)先引入,再使用:


1

2

3

4

5

6

7

8

from django.conf.urls import url

from django.contrib import admin

from learn import views as learn_views  # new

urlpatterns = [

    url(r‘^$‘, learn_views.index),  # new

    url(r‘^admin/‘, admin.site.urls),

]

以上都修改并保存后,我们来看一下效果!

在终端上运行 python manage.py runserver 我们会看到类似下面的信息:


1

2

3

4

5

6

7

8

9

10

11

12

13

$ python manage.py runserver

Performing system checks...

System check identified no issues (0 silenced).

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

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

December 22, 2015 - 11:57:33

Django version 1.9, using settings ‘mysite.settings‘

Starting development server at http://127.0.0.1:8000/

Quit the server with CONTROL-C.

我们打开浏览器,访问 http://127.0.0.1:8000/

不出意料的话会看到:

注意:如果是在另一台电脑上访问要用 python manage.py ip:port 的形式,比如监听所有ip:


1

2

3

python manage.py runserver 0.0.0.0:8000

监听机器上所有ip 8000端口,访问时用电脑的ip代替 127.0.0.1

时间: 2024-10-23 00:21:25

Django视图与网址的相关文章

1.2、Django 视图与网址__进阶

Django 视图与网址进阶 1.1.简单使用: 把我们新定义的app加到settings.py中的INSTALL_APPS中 修改 HelloDjango/HelloDjango/settings.py INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.message

Django 视图与网址

Django 视图与网址 此文已经针对 Django 2.0 更新,适用于 Django 1.4 - Django 2.0 所有版本. Django中网址是写在 urls.py 文件中,用正则表达式对应 views.py 中的一个函数(或者generic类),我们用一个项目来演示. 下载本节所有源代码: 学习编程最好的办法就是动手敲代码,请按照教程做,本节很简单,不提供源代码了,动手开始吧! 一,首先,新建一个项目(project), 名称为 mysite 1 django-admin star

Django 视图与网址进阶

一 .在网页上做加减法 1. 采用 /add/?a=4&b=5 这样GET方法进行 1 2 3 django-admin.py startproject zqxt_views cd zqxt_views python manage.py startapp calc 自动生成目录大致如下(因不同的 Django 版本有一些差异,如果差异与这篇文章相关,我会主动提出来,没有说的,暂时可以忽略他们之间的差异,后面的教程也是这样做): 1 2 3 4 5 6 7 8 9 10 11 12 13 zqxt

django RESTful研究一第一个测试例子(用序列化器编写原生的Django视图函数)

让我们看看通过 Serializer 类怎样来编写 API 的视图函数,现在我们不会使用 REST 框架中的特性,仅仅写原生的Django视图函数. 一.我们创建一个 HttpResponse 的子类,用来将任何数据转换成 JSON格式. 编辑snippets/views.py,如下: from django.http import HttpResponse from django.views.decorators.csrf import csrf_exempt from rest_framew

[diango]理解django视图工作原理

前言:正确理解django视图view,模型model,模板三种概念才能快速使用django制作网页 本文主要讲解自己在学习django后对视图view的理解 正文:一个django视图需要拥有视图函数,如果想要视图函数工作则需要把 url 映射l到视图. 视图函数放在叫做views.py的文件中,这个文件位置位于django工程目录下 下面举例说明视图工作原理: 下面是一个返回当前日期和时间作为HTML文档的视图: from django.http import HttpResponse im

django -- 视图

django -- 视图 视图接受Web请求并且返回Web响应 视图就是一个python函数,被定义在views.py中 响应可以是一张网页的HTML内容,一个重定向,一个404错误等等 响应处理过程如下图: URLconf URLconf 在settings.py文件中通过ROOT_URLCONF指定根级url的配置 urlpatterns是一个url()实例的列表 一个url()对象包括: 正则表达式 视图函数 名称name 编写URLconf的注意: 若要从url中捕获一个值,需要在它周围

Django视图(View)

Django 视图 声明:文章部分内容来源https://www.cnblogs.com/maple-shaw/articles/9285269.html 视图的概念:一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片 视图的规范:无论视图本身包含什么逻辑,都要返回响应.代码写在哪里也无所谓,只要它在你当前项目目录下面.除此之外没有更多的要求了--可以说

肆拾陆 ---django视图层与模板层

django视图层与模板层 一.视图层 1.1 HttpResponse.render.redirect ? HttpResponse:返回字符串: ? redirect:重定向 ? render:返回一个html页面,也可以给模板传值 ? render的逻辑原理: from django.template import Template,Context def index(request): res = Template('<h1>{{ user }} </h1>') con =

Django视图扩展类

Django视图扩展类 扩展类必须配合GenericAPIView使用扩展类内部的方法,在调用序列化器时,都是使用get_serializer 需要自定义get.post等请求方法,内部实现调用扩展类对应方法即可 . 一.mixins的视图子类 作用: 提供了几种后端视图(对数据资源进行曾删改查)处理流程的实现,如果需要编写的视图属于这五种,则视图可以通过继承相应的扩展类来复用代码,减少自己编写的代码量 . 这五个扩展类需要搭配GenericAPIView父类,因为五个扩展类的实现需要调用Gen