首页 > 其他 > 详细

【Django试图与网址003】

时间:2019-04-18 17:46:09      阅读:110      评论:0      收藏:0      [点我收藏+]

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

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

django-admin startproject mysite

备注:

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

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

 

运行后,如果成功的话, 我们会看到如下的目录样式   (没有成功请参见:https://code.ziqiangxuetang.com/django/django-install.html):

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
from django.shortcuts import render

def index(request):
    return HttpResonse(u"开启网站开发之旅!!!")

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

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

 

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

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

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

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

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

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

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

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 2.0 版本的同学,Django 官方鼓励(或说要求)先引入,再使用:

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),
]

Django 2.0 版本的同学,urls.py 有比较大的变化(a)(上面 Django 1.8 的在 2.0 中也可以用,是兼容的)

from django.contrib import admin
from django.urls import path
from learn import views as learn_views  # new


urlpatterns = [
    path(‘‘, learn_views.index),  # new
    path(admin/, admin.site.urls),
]

 

【Django试图与网址003】

原文:https://www.cnblogs.com/frankruby/p/10730968.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!