Django【三】安装/分组命名/路由分发

一、安装Django

命令行窗口:

pycharm安装:

二、创建Django项目

命令行窗口创建项目:

访问地址:

表示访问成功

注意如果我们在命令行窗口创建的应用需要我们手动的在django的settings配置文件中注册你添加的应用:

INSTALLED_APPS = [
    ‘django.contrib.admin‘,
    ‘django.contrib.auth‘,
    ‘django.contrib.contenttypes‘,
    ‘django.contrib.sessions‘,
    ‘django.contrib.messages‘,
    ‘django.contrib.staticfiles‘,
    ‘app01.apps.App01Config‘,
    # ‘app02.apps.App02Config‘,   # 注册应用
    ‘app02‘,    # 可以简写
]

pycharm创建项目:

三、简单的web

第一步:urls.py写正则和对应的函数

from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
    # url(r‘^admin/‘, admin.site.urls),
    url(r‘^login/‘, views.userlogin),   # 匹配用户输入的url,拿着匹配的url调用对应的方法
] 

第二步:views.py视图函数,写逻辑,将匹配到的html页面发送给前端

from django.shortcuts import render,HttpResponse

# Create your views here.
def userlogin(request):
    # return HttpResponse("文章")   # 返回文本字符串
    return render(request,"login.html")   # get请求,返回html页面

get请求返回html页面

from django.shortcuts import render,HttpResponse

# Create your views here.
def userlogin(request):
    # return HttpResponse("文章")
    if request.method == "GET":

        return render(request,"login.html")
    else:
        user = request.POST.get("username")  # 拿到用户提交的用户名和密码
        pwd = request.POST.get("password")
        print(user,pwd)
        return render(request,"login.html")     

post请求返回html页面

post请求返回html页面

from django.shortcuts import render,HttpResponse

# Create your views here.
def userlogin(request):
    # return HttpResponse("文章")
    if request.method == "GET":    # 判断是什么请求

        return render(request,"login.html")
    else:
        user = request.POST.get("username")
        pwd = request.POST.get("password")
        print(user,pwd)
        if user =="chao" and pwd == "123": #  判断密码是都正确
            return render(request,"successfully.html")
        else:
            return HttpResponse("404")       # 密码错误返回404

html文件接收参数的格式:

效果:

第三步:templates 文件夹里面创建要返回的html文件

补充说明

# 是否开启URL访问地址后面不为/跳转至带有/的路径的配置项
APPEND_SLASH=True

  Django settings.py配置文件中默认没有 APPEND_SLASH 这个参数,但 Django 默认这个参数为 APPEND_SLASH = True。 其作用就是自动在网址结尾加‘/‘。其效果就是:我们定义了urls.py:

from django.conf.urls import url
from app01 import views

urlpatterns = [
        url(r‘^blog/$‘, views.blog),
]

  访问 http://www.example.com/blog 时,默认将网址自动转换为 http://www.example/com/blog/ 。

  如果在settings.py中设置了 APPEND_SLASH=False,此时我们再请求 http://www.example.com/blog 时就会提示找不到页面。

四、分组命名匹配

无命名分组:

from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
    url(r‘^login/(\d{4})/(\d{1,2})‘, views.userlogin),
]

# 按照位置将匹配的参数传给userlogin函数

from django.shortcuts import render,HttpResponse

# Create your views here.
def userlogin(request,year,month):
    return HttpResponse(year+month)

命名分组:

from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
    url(r‘^login/(?P<year>\d{4})/(?P<month>\d{1,2})‘, views.userlogin),
]

# 给匹配的字符进行命名

from django.shortcuts import render,HttpResponse

# Create your views here.
def userlogin(request,year,month):
    return HttpResponse(month+year)

# 函数要想取值,必须用命名分组的名字进行取值,

视图函数的默认值:

from django.shortcuts import render,HttpResponse

# Create your views here.
def userlogin(request,year,month="12"):    # 没给传参就用默认的值
    return HttpResponse(month+year)

五、路由分发

include路由分发

一个项目中可以有许多应用程序

例如微信这个项目,有语音功能、视频功能、发朋友圈的功能等等;

views和models文件是不是都放在每一个app应用里面了啊,而urls.py这个文件放在哪了,是不是放在项目文件夹里面了,说明什么,说明是不是所有的app都在使用它,如果你一个项目有10个应用,每个应用有100个url,那意味着你要在urls文件里面要写多少条url对应关系,并且所有的app的url都写在了这一个urls文件里面啊,这样好吗,当然也没有问题,但是耦合程度太高了,所以django在url这里给你提供了一个分发接口,叫做include

总路由:

from django.conf.urls import url,include
from django.contrib import admin
from app01 import views
urlpatterns = [
    url(r‘^app01/‘, include("app01.urls")),
    url(r‘^app02/‘, include("app02.urls")),
]

# 用户访问http://127.0.0.1:8000/app01/index/1234 会被自动分配到app01的urls中去匹配index/1234,如果存在则执行对应的函数

app01中的urls:

from django.conf.urls import url,include
from django.contrib import admin
from app01 import views
urlpatterns = [
    url(r‘^index/(?P<year>\d+)‘, views.index),
]

# 匹配用户输入的内容并执行对应的函数

app01中的viesw:

from django.shortcuts import render,HttpResponse

# Create your views here.
def index(request,year,month="12"):
    return HttpResponse(month+year)

# 接收命名分组的参数,如果用户没有输入就用默认值

实际上就是总路由接收用户的请求来判断这个请求到底属于哪个应用程序的,匹配成功后分别执行自己对应的函数

六、配置django让别人可以访问自己的服务器

1、查看自己的ip地址

2、点击Edit

3、输入ip地址保存

4、配置settings

注意:需要关闭防火墙

原文地址:https://www.cnblogs.com/youxiu123/p/11600243.html

时间: 2024-11-08 18:02:38

Django【三】安装/分组命名/路由分发的相关文章

django之路由分组,路由分发,FBV,CBV,ORM框架

django之路由分组,路由分发,FBV,CBV,ORM框架 今日的内容: a. 路由系统 1. 创建app 2. 路由的分组 3. 路由的分发 - 正则表达式匹配 b. django的orm(模型model) 1. 创建模型的步骤 2. orm基本的增删改查 3. 正向查询和反向查询 注意事项: 1. 前台传给后台一个列表时,后端如何接受: request.POST.getlist(字段名) 2. 前台传给后台一个列表时,需要在ajax请求中增加一个参数: traditional: true

一、虚拟环境.二、路由配置主页与404.三、2.x路由分发.四、伪静态.五、request对象.六、FBV与CBV.七、文件上传.

一.虚拟环境 ''' 解决版本共存 1. 用pycharm选择File点击NewProject然后选择virtualenv创建一个纯净环境 2. 打开下载的目录将venv文件夹下的所有文件(纯净的环境)copy到需要指定长期使用的文件夹下 3. 再次创建项目时,将该环境(指定长期使用的文件夹下Scripts文件夹中的python.exe文件)添加到pycharm环境选择(System Interpreter)中 4. 为该环境添加需要处理的版本共存包 ''' 二.路由配置主页与404 ''' 路

Django基础篇--模板和路由分发

Django模板 首先什么是一个模板? 简单来说就是一个网页,可以被view响应给用户 目的是为了解决复杂的显示问题 2. 模板的设置问题 setting.py中的TEMPLATES配置 1)BACKEND: 指定模板的搜索引擎,不用改动 2)DIRS: 指定模板存放的目录 DIRS=[' index.temp' ,'music.temp'] 但是,如果DIRS中为空的话,那么django会自动搜索每个应用中的templates的文件夹作为模板的管理目录 推荐:DIRS保持空,但必须在每个应用中

一、数据库表中字段的增删改查,二、路由基础.三、有名无名分组.四、多app共存的路由分配.五、多app共存时模板冲突问题.六、创建app流程.七、路由分发.八、路由别名,九、名称空间.十、反向解析.十一、2.x新特性.十二、自定义转换器

一.数据库表中字段的增删改查 ''' 直接在modules中对字段进行增删改查 然后在tools下点击Run manage.py Task执行makemigrations和migrate 注意在执行字段的删除过程中需不需要对数据进行备份 ''' 二.路由基础 ''' # url中含有四个参数 # url(regex, view, kwargs=None, name=None) # 正则路径 视图函数地址 默认关键字参数(了解) 路由别名 # r'index' 只要请求中含有index都可以匹配成

四十七、django路由匹配,分组,反向解析,路由分发,视图层

路由匹配: urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^text', views.text), url(r'^testadd', views.testadd), ] 第一个参数是一个正则表达式,也就意味着在路由的匹配的时候,是按照正则匹配的规则去匹配, 路由匹配的顺序是从上往下依次匹配,所有如上两个路由test前面一样,第三个路由一直会匹配不上 正确写法: urlpatterns = [ url(r'^admin/', adm

django之路由分发

路由分发决定哪一个路由由哪一个视图函数来处理. 注意:django2.0里的re_path和django1.0里的url除了名字不一样,其他都一样. 简单配置 from django.urls import path,re_path from app01 import views urlpatterns = [ path('admin/', admin.site.urls), path('timer/',views.timer), # 路由配置: 决定哪一个路由由哪一个视图函数来处理 # rep

Django URL路由分发系统

Django  URL路由分发系统 URL匹配过程 在Django中,我们使用urls.py模块处理url的分发 例:http://127.0.0.1:8080/abindex?a=1 1)去除域名和端口以及 /,剩下 abindex?a=1 2)拿 abindex?a=1 先到项目的 url.py 去匹配,然后拿剩下的index再到应用下面的urls.py去匹配 3)如果匹配成功,则调用相应的视图函数产生的内容返回给客户端.匹配失败的话则返回404错误. from django.conf.ur

Django基础之路由分发

目录 Django之路由层 一.路由的作用 二.简单的路由配置 三.分组 四.路由分发 Django之路由层 一.路由的作用 ? 路由其实就是请求地址与视图函数的映射关系,如果把网站比喻为一本书,那么路由就好比是这本书的目录,在Django中路由默认配置在urls.py中. 二.简单的路由配置 # urls.py from django.conf.urls import url # urlpatterns(路由表):由一条条映射关系组成 urlpatterns = [ url(regex, vi

stark组件前戏(3)之django路由分发的本质include

django路由分发的三张方式 方式一: from django.urls import re_path, include urlpatterns = [ re_path(r'^web/', include('app01:urls')), ] include的返回值: return (urlconf_module, app_name, namespace) 方式二: # include函数主要返回有三个元素的一个元组. # app01/urls.py urlpatterns = [ re_pat