Django 视图与网址

2019年8月10日 by 没有评论

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

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

django-admin startproject mysite

备注:

1. 若是 django-admin 弗成,请用 django-admin.py

2. 若是是在Linux是用源码装置的,或用 pip 装置的,也是用  django-admin.py 命令

运转后,若是胜利的话, 咱们会看到以下的目次样式   (不胜利的请拜见一节):

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

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

咱们能够看到mysite中多个一个 learn 文件夹,此中有以下文件。

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

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翻开,修正

休学此中的源代码,改成下面的

#coding:utf-8

fromdjango.httpimportHttpResponse

defindex(request):

returnHttpResponse(u”欢迎光临 自强私塾!”)

第一行是申明编码为utf-8, 因为咱们在代码顶用到了中文,若是不申明就报错.

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

咱们界说了一个index()函数,第一个参数必须是request,与网页发来的乞求无关,request 变量里面包括
getpost的内容,用户浏览器,零碎等信息在里面(前面会讲,先了解一下就能够)。

函数前往了一个 HttpResponse 对象,能够经过一些处理,最终显示几个字到网页上。

那问题来了,咱们拜候甚么
网址才能看到适才写的这个函数呢?怎么让网址和函数关联起来呢?

界说视图函数相关的URL(网址)  (即划定 拜候甚么
网址对应甚么
内容)

咱们翻开mysite/mysite/urls.py这个文件, 修正

休学此中的代码:

因为 Django 版本对 urls.py 进行了一些更改:

Django 1.7.x 及以下的同学也许看到的是如许的:

fromdjango.conf.urlsimportpatterns, include, url

fromdjango.contribimportadmin

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 官方鼓励(或说要求)先引入,再使用:

fromdjango.conf.urlsimporturl

fromdjango.contribimportadmin

fromlearnimportviews as learn_views# new

urlpatterns=[

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

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

]

以上都修正

休学并保存后,咱们来看一下效果!

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

$ 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.

咱们翻开浏览器,拜候

不出意料的话会看到:

注意:若是是在另一台电脑上拜候要用 python manage.py ip:port 的方式,比如监听一切ip:

python manage.py runserver 0.0.0.0:8000

监听机器上一切ip 8000端口,拜候时用电脑的ip取代 127.0.0.1

Django中的 urls.py 用的是正则进行婚配的,若是不熟悉,您能够学习和

更多精彩,尽在https://bigbenshosting.com