2019独角兽企业重金招聘Python工程师标准>>>
项目架构
MydjangoAPPmigrationsstaticjquery-3.3.1.slim.min.jstemplatesindex.htmllogin.htmladmin.pyapps.pymodels.pytests.pyurls.pyviews.pyMydjangosettings.pyurls.pywsgi.pydbsqlite3manage.py
创建项目
创建项目和项目应用
django-admin startproject Mydjango
cd Mydjango
python manage.py startapp APP
创建HTML的模版目录及模版文件 APP/templates > index.html
现在时间 {{ t }}
创建HTML的模版目录及模版文件 APP/templates > login.html
用户名 密   码登录系统
Mydjango/APP/static/apps.py
from django.apps import AppConfigclass APPConfig(AppConfig):name = 'APP'
Mydjango/Mydjango/settings.py
==> 注:SECRET_KEY 是唯一识别码,不可变更和复制他用,每个项目都有独立的 SECRET_KEY 码==
# -*- coding:utf8 -*-
import osINSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles',# 新增项目应用'APP',
]
MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware',#视图中间件安全机制,如果使用需要在模版中添加{% csrf_token %}'django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware',
]
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR,'templates')],# html 文件存放路径'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},},
]
# 访问别名,js jquery css等文件引入时候使用
STATIC_URL = '/static/'
# js jquery css等文件存放路径
STATICFILES_DIRS=(os.path.join(BASE_DIR,"APP/static"),)
MyDjango/APP/views.py
# -*- coding:utf8 -*-
from django.shortcuts import render,HttpResponse,redirect
import time
# Create your views here.def Show_time(requset): #页面展示和CSS测试t = time.ctime()return render(requset,"index.html",locals()) #返回指定页面内容def Article_txt(requset,num): #无命名分组正则测试# 第二个参数是正则表达式进行分组的内容# 如果有两个或以上分组传过来需要对应数量的参数# 无命名分组参数名称可自定义return HttpResponse(num)def Title_txt(requset,id): #命名分组正则测试# 第二个参数是正则表达式进行分组的内容# 如果有两个或以上分组传过来需要对应数量的参数# 命名分组参数必须和 urls.py 分组命名保持一致return HttpResponse(id)def User_login(requset): #登录提交数值测试if requset.method == "POST": #判断视图函数提交类型print(requset.POST.get("user"))print(requset.POST.get("passwd"))return redirect("/APP") #返回指定内容else:return render(requset,"login.html",locals()) #返回指定页面内容
Mydjango/Mydjango/urls.py 全局主urls
# -*- coding:utf8 -*-
from django.contrib import admin
from django.urls import path,re_path # 引入urls path模块和re_path模块
from django.urls import include # 引入url分发 include模块
from APP import views # 引入项目应用函数模块urlpatterns = [path('admin/', admin.site.urls), #系统默认path('APP/', views.Show_time), #普通URL应用path('login/', views.User_login,name="reg"), #普通URL应用,启用别名re_path(r'^article',include('APP.urls')), #正则匹配符合条件 在指定包含文件中找
]
Mydjango/Mydjango/APP/urls.py 项目应用子urls
# -*- coding:utf8 -*-from django.contrib import admin
from django.urls import path,re_path
# 引入urls path模块和re_path模块from APP import views
# 引入项目应用函数模块urlpatterns = [re_path(r'(\d{4})',views.Article_txt), #带正则表达式url应用【无命名分组】re_path(r'(?P
]
项目测试
启动项目
python manage.py runserver 8000
访问测试(path普通用法)
http://127.0.0.1:8000/APP/
访问测试(re_path正则用法)
http://127.0.0.1:8000/article/1234
# 无命名分组
http://127.0.0.1:8000/article/abcd
# 命名分组
模拟登陆测试
http://127.0.0.1:8000/login/