Django 视图与网址:
一,首选,新建一个项目(project),名称为mysite:
django-admin startproject mysite
node2:/app/mysite#cd ..
You have mail in /var/spool/mail/root
node2:/app#tree
.
└── mysite
├── blog
│ ├── admin.py
│ ├── admin.pyc
│ ├── apps.py
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── migrations
│ │ ├── __init__.py
│ │ └── __init__.pyc
│ ├── models.py
│ ├── models.pyc
│ ├── tests.py
│ └── views.py
├── db.sqlite3
├── manage.py
└── mysite
├── __init__.py
├── __init__.pyc
├── settings.py
├── settings.pyc
├── urls.py
├── urls.pyc
├── wsgi.py
└── wsgi.pyc
4 directories, 21 files
node2:/app#
我们会发现执行命令后,新建一个mysite目录,其中还有一个mysite目录,这个字目录mysite中是一些项目的设置
settings.py文件
我们到外层那个mysite目录下(不是mysite中的mysite目录)
二,新建一个应用(app),名称叫learn:
python manage.py startapp learn # learn 是一个app的名称
node2:/app/mysite#python manage.py startapp learn
node2:/app/mysite#tree learn/
learn/
├── admin.py
├── apps.py
├── __init__.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
└── views.py
1 directory, 7 files
把我们新定义的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',
'blog',
'learn',
]
备注,这一步是干什么呢? 新建的app如果不加到INSTALL_APPS中的话,django就不能自动找到app中的模板文件
(app-name/templates/下的文件)和静态文件(app-name/static/中的文件) , 后面你会学习到它们分别用来干什么.
定义视图函数(访问页面时的内容):
我们在learn这个目录中,把views.py 打开,修改其中的源代码,改成下面的:
# coding:utf-8
from django.http import HttpResponse
def index(request):
return HttpResponse(u"欢迎光临 自强学堂!")
node2:/app/mysite/learn#cat views.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.shortcuts import render
# Create your views here.
from django.http import HttpResponse
def index(request):
return HttpResponse(u"欢迎光临 自强学堂!")
第一行是声明编码为utf-8,因为我们在代码中用到了中文,如果不声明就报错
第二行引入HttpResponse,它是用阿里向网页返回内容的,就像Python中的print 一样,
只不会HttpResponse 是把内容显示到网页上。
我们定义了一个index()函数,第一个参数必须是request
request变量里面包含了get或post的内容,用户浏览器等
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^learn/', learnview.index),
]
node2:/app/mysite/learn#cat views.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.shortcuts import render
# Create your views here.
from django.http import HttpResponse
def index(request):
return HttpResponse(u"欢迎光临 自强学堂!")
我们定义了一个index()函数,第一个参数必须是request,与网页发来的请求有关,request变量里面包含get或post的内容。
函数返回一个HttpResponse 对象,可以经过一些处理,最终显示几个字到网页上。
那问题来了,我们访问什么网址才能看到刚才写的这个函数呢?怎么让网址和函数管理起来呢
定义视图函数有关的URL(网址)(即规定 访问什么网址对应什么内容)
我们打开 mysite/mysite/urls.py 这个文件, 修改其中的代码:
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),
]
node2:/app/mysite/learn#cat views.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.shortcuts import render
# Create your views here.
from django.http import HttpResponse
def index(request):
return HttpResponse(u"欢迎光临 自强学堂!")