Django试图与网址

2017-10-13  本文已影响0人  高阳刘

一、get方法访问视图

  1. 新建一个django项目
django-admin.py startpoject myweb(项目的名字)
  1. 进入项目文件夹下面,创建一个app
python manage.py startapp blog或
django-admin.py startapp blog(app的名字
  1. 找到myweb/myweb/setting.py修改相关内容
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog'(app的名字),
)

备注: 这一步是干什么呢? 新建的 app 如果不加到 INSTALL_APPS 中的话,django 就不能自动找到app中的模板
文件(app-name/templates/下的文件)和静态文件(app-name/static/中的文件) , 后面你会学习到它们分别用来
干什么.
  1. 在app下面创建一个templates包,创建一个find.html文件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    this 测试!
<div>
    <b>{{x}}</b> <b>{{y}}</b> <b>{{z}}</b>
</div>
</body>
</html>
  1. 定义视图函数(访问页面时的内容)

在blog中的目录中,更改view.py中的源码

def find(request):
    if request.GET:
        x = request.GET['x']
        y = request.GET['y']
        z = int(x) + int(y)
    return render(request, 'find.html', {'x': x, 'y': y, 'z': z})
    
上面定义了一个find()函数,第一个参数必须是request,与网页发来的请求有关,request变量里面包好了get
和post的内容,用户浏览器,系统等信息在里面

  1. 然后终端上运行python manage.py runserver,会出现以下
Performing system checks...

System check identified some issues:

WARNINGS:
blog.People.age: (fields.W122) 'max_length' is ignored when used with IntegerField
    HINT: Remove 'max_length' from field

System check identified 1 issue (0 silenced).
August 29, 2017 - 10:56:24
Django version 1.11, using settings 'myweb.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

  1. 打开浏览器访问
http://127.0.0.1:8000/find/?x=10&y=10

就会看到以下的结果

this 测试!
10 10 20 

二、post方式访问视图

  1. 新建一个django项目
django-admin.py startpoject myweb(项目的名字)
  1. 进入项目文件夹下面,创建一个app
python manage.py startapp blog或
django-admin.py startapp blog(app的名字
  1. 找到myweb/myweb/setting.py修改相关内容
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog'(app的名字),
)

备注:同上
  1. 在app下面创建一个templates包,创建一个find.html文件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div>
        <form action="/post_demo" method="post">
            <input type="text" name="x">
            <input type="text" name="y">
            <!--post提交必须加上-->
           {% csrf_token %}
            <input type="submit" value="提交">
        </form>
    </div>
</body>
</html>
  1. 定义视图函数(访问页面时的内容)

在blog中的目录中,更改views.py中的源码

def post_demo(request):
    if request.method == "POST":
        x = request.POST['x']
        y = request.POST['y']
        z = int(x) + int(y)

        print(z)
    return render(request, 'find.html')
    
上面定义了一个find()函数,第一个参数必须是request,与网页发来的请求有关,request变量里面包好了get
和post的内容,用户浏览器,系统等信息在里面

  1. 然后终端上运行python manage.py runserver,会出现以下
Performing system checks...

System check identified some issues:

WARNINGS:
blog.People.age: (fields.W122) 'max_length' is ignored when used with IntegerField
    HINT: Remove 'max_length' from field

System check identified 1 issue (0 silenced).
August 29, 2017 - 10:56:24
Django version 1.11, using settings 'myweb.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

  1. 打开浏览器访问
http://127.0.0.1:8000/post_demo

就会看到以下的结果

两个输入框,一个提交按钮

输入10,10,点击提交

查看终端 输出20

打开调试器,就会看到

form data:
x: 10
y: 10
csrfmiddlewaretoken:"v6AR7UCs2h0yJQh0g4DrHErbDKlUvRSI6r7yD8WoRTmsWyexS9ASf3zkHc15f2Q8"

上一篇 下一篇

猜你喜欢

热点阅读