zoukankan      html  css  js  c++  java
  • Django 视图与网址

    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"欢迎光临 自强学堂!")
    

  • 相关阅读:
    用Python操纵文件(自动化脚本的第一步)
    关于Numpy Array的使用技巧整理
    有用的在线小工具汇总
    HackerRank刷题之路---Python
    周志华老师《机器学习》复习要点(持续更新)
    Python函数式编程学习笔记
    Supervised Descent Method学习之路(持续更新)
    HackerRank刷题之路之---Algorithm(基于Python2)(持续更新)
    Vim常用命令精简化汇总及Vim的相关配置问题
    在VC++6.0中,如何将多个工程添加到同一个工作区?
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13349382.html
Copyright © 2011-2022 走看看