2、Django_创建第一个应用

2019-09-26  本文已影响0人  猪儿打滚
Django的特点
一、安装
二、创建项目和运行
django -admin startproject 项目名

2.运行项目

$ python manage.py runserver
$ python manage.py runserver ip:端口
2.运行项目: 运行成功 3.访问localhost:8000: 访问
三、语言和时间改成中文

修改settings.py文件:

# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-hans'

# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'
结果: 中文
四、目录结构和介绍
目录结构
五、创建应用

在Django中,每个应用对应一个Python包,并且遵循同样的约定。Django自带一个工具,可以帮助我们自动生成Django应用的基础目录结构,十分方便。

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    
    # 注册子应用
    'polls.apps.PollsConfig'  # 大部分情况简写成'polls'
]

4.编写第一个视图
polls/views.py(管理视图,好比URL对应的内容)
这里添加视图函数
1.第一个参数requestsHttpRquest对象,包含前端用户的所有请求信息。
2.返回值必须是一个HttpResponse对象或者子对象

# 新增如下代码
from django.shortcuts import render

# Create your views here.
from django.http import HttpResponse


def index(request):
    return HttpResponse("hello, django.  You're at the polls index.")


def login(request):
    # 可以通过request对象拿到请求的所有数据
    if request.method == 'GET':  # 大写
        return HttpResponse(" You're at the polls login.GET请求")
    elif request.method == 'POST':
        return HttpResponse(" You're at the polls login.POST请求")
    else:
        return HttpResponse(" You're at the polls login.其它请求")

5.编写“目录”
一个view创建后,如果想要起到效果,我们需要创建一个url去映射到这个视图。所以此时我们需要在该polls应用目录下创建一个url声明文件urls.py
5.1.urls.py
PS.实际上,一个项目往往会有多个app,那么Django是如何区分这些app的urlname的呢?这时候可以使用URL conf的命名空间。也就是在各个app的urls.py文件的开头,添加上一个app_name变量来指定该app的命名空间

from django.urls import path

from . import views

## 指定当前应用的命名空间
app_name = 'polls'

urlpatterns = [
    # url路径,所映射的view方法,对应的名称
    path(r'', views.index, name="index"),
    # 注意不需要/
    path(r'login', views.login, name="login"),
]

6.在项目中绑定应用
应用的内容创建完毕,接下来就需要到项目根目录的urls.py文件中去绑定所创建的应用的polls.urls模块
Django_Test/Django_Test/urls.py:

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    //  host后面的第一级路径、所映射应用的所有url都在该一级路径下
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls) # 进入localhost:8000/admin会进入Django的admin管理页面
]

还可以这样灵活使用include()进行路由转发

### 原来的路由配置
from django.urls import path
from . import views

urlpatterns = [
    path('<page_slug>-<page_id>/history/', views.history),
    path('<page_slug>-<page_id>/edit/', views.edit),
    path('<page_slug>-<page_id>/discuss/', views.discuss),
    path('<page_slug>-<page_id>/permissions/', views.permissions),
]

### 优化后
urlpatterns = [
    path('<page_slug>-<page_id>/', include([
        path('history/', views.history),
        path('edit/', views.edit),
        path('discuss/', views.discuss),
        path('permissions/', views.permissions),
    ])),
]

7.访问
http://127.0.0.1:8000/polls/

polls/

http://127.0.0.1:8000/polls/login

polls/login,get请求
六、path函数
七、类视图
from django.http import HttpResponse

from django.views import View


class Index(View):
    """
    类视图,需继承View类
    """

    def get(self, request):
        return HttpResponse("hello, django.  You're at the polls index.==>GET")

    def post(self, request):
        return HttpResponse("hello, django.  You're at the polls index.==>POST")

2.polls/urs.py

from django.urls import path

from . import views

urlpatterns = [
    # 匹配类视图
    path(r'', views.Index.as_view(), name='index')
]
结果: 类视图
上一篇 下一篇

猜你喜欢

热点阅读