码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-09-27 21:09:40      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:none   说明   height   col   admin   html   creat   password   sage   

一、安装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

技术图片

 注意:需要关闭防火墙

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

标签:none   说明   height   col   admin   html   creat   password   sage   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!