什么是Django?
Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。
Django框架介绍:
-
用于创建模型的对象关系映射
-
为最终用户设计的完美管理界面
-
一流的 URL 设计
-
设计者友好的模板语言
-
缓存系统。
创建Djiano项目:
首先安装Djiano:
pip3 install django
创建Djiano项目:
django-admin startproject mysite
Djiano目录介绍:
mysite#对整个文件进行配置 __init__.py settings.py#配置文件 urls.py #url 和函数或者类对应关系 wsgi.py # 导入模块,本质上创建一个socket manage.py #管理Django程序
自定义一个url访问:
首先导入返回的模块:
from django.shortcuts import HttpResponse
在urls.py里面定义一个函数:
def home(request): return HttpResponse("<h1>Hello</h1>")#返回Hello
设定访问目录:
urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^home/', home),#r设定访问的目录 如http://AbeoHu.com/home 后面的home指的是函数 ]
访问127.0.0.1:8000:
创建APP
如果要创建一个CMDB项目,那么CMDB就是一个APP,业务代码要和前端要分开
创建App:
python manage.py startapp cmdb
App目录介绍:
views.py:存放业务代码
比如我们将我们上边的home函数放到这里,url只需要导入模块就可以访问:
views配置:
from django.shortcuts import HttpResponse def home(request): return HttpResponse("<h1>Hello</h1>")
urls配置:
url(r'^home/', views.home),
App目录功能:
cmdb -migraations 数据修改表结构记录 -__init__ 导入文件需要 -admin 后台管理 -tests 单元测试 -views 业务代码
通过Djano去写一个登陆页面:
templates:存放html文件
render 自动打开并返回页面
业务代码文件:
from django.shortcuts import render from django.shortcuts import HttpResponse def home(request): return HttpResponse("<h1>Hello</h1>") def login(request): return render(request,"login.html") # Create your views here.
前端文件:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href="/static/commons.css"> <style> label{ width: 80px; text-align: right; display: inline-block; } </style> </head> <body> <form action="/login" method="post"> <p> <label for="username">用户名:</label> <input id="username" name="user" type="text" /> </p> <p> <label for="password">密码:</label> <input id="password"name="pwd" type="text" /> <input type="submit" value="提交" /> <span style="color: red">{{ error_mag }}</span> </p> </form> </body> </html>
url文件:
"""web URL Configuration The `urlpatterns` list routes URLs to views. For more information please see: https://docs.djangoproject.com/en/1.10/topics/http/urls/ Examples: Function views 1. Add an import: from my_app import views 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') Class-based views 1. Add an import: from other_app.views import Home 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') Including another URLconf 1. Import the include() function: from django.conf.urls import url, include 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) """ from django.conf.urls import url from django.contrib import admin from django.shortcuts import HttpResponse from cmdb import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^home/', views.home), url(r'^login/', views.login), ]
显示界面:
配置静态目录:
css、jss文件
首先创建目录存放静态文件
我这里用的static
里面写css样式
body{
background-color: #eeeeee;
}
setting配置让html访问静态文件:
STATICFILES_DIRS=( os.path.join(BASE_DIR,'static'), )
再次访问,生效
OK,现在一个简单的登陆页面做完了,但是,我们提交的页面提交到哪里呢?
默认是提交到login文件里,但是会报错,怎么办?注释文件settings的内容
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', #'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]
在后台获取用户输入的内容:
用户提交方式有Get和Post
怎么获取?
request参数里面包含了用户所有的信息
request.methord获取用户提交方式
request.POST封装了所有POST方法
return redirect重定向
特殊字符{{error_masage}}
from django.shortcuts import render from django.shortcuts import HttpResponse,render,redirect def home(request): return HttpResponse("<H1>CMDB</H1>") # Create your views here. def login(request): error_mag="" #request用户所有的信息 if request.method=="POST": user=request.POST.get("user",None)#获取用户输入的用户 pwd=request.POST.get("pwd",None)#获取用户输入的密码 if user=="root" and pwd=="123456":#做判断 return redirect("http://www.baidu.com") else: error_mag="用户名和密码不匹配" return render(request,"login.html",{"error_mag":error_mag})#返回用户名密码不匹配
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href="/static/commons.css"> <style> label{ width: 80px; text-align: right; display: inline-block; } </style> </head> <body> <form action="/login" method="post"> <p> <label for="username">用户名:</label> <input id="username" name="user" type="text" /> </p> <p> <label for="password">密码:</label> <input id="password"name="pwd" type="text" /> <input type="submit" value="提交" /> <span style="color: red">{{ error_mag }}</span> </p> </form> </body> </html>
OK,那么简单的登陆页面就做完了,继续做后台界面
之前咱们的登陆界面,登陆成功后是百度页面,那咱们自己做个后台。
后台程序我们在去建立一个home的页面,主要做后台管理
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body style="margin: 0"> <div style="height: 48px;background-color: #dddddd"></div> <div> <form action="/home" method="post"> <input type="text" name="username" placeholder="用户名" /> <input type="text" name="email" placeholder="邮箱"/> <input type="text" name="gender" placeholder="性别"/> <input type="submit" value="添加" /> </form> </div> <div> <table> {% for row in user_list %} <tr> <td>{{ row.username }}</td> <td>{{ row.gender }}</td> <td>{{ row.email }}</td> </tr> {% endfor %} </table> </div> </body> </html>
from django.shortcuts import render from django.shortcuts import HttpResponse,render def home(request): return HttpResponse("<H1>CMDB</H1>") # Create your views here. def login(request): error_mag="" if request.method=="POST": user=request.POST.get("user",None) pwd=request.POST.get("pwd",None) if user=="root" and pwd=="123456": return render(request,"home.html") else: error_mag="用户名和密码不匹配" return render(request,"login.html",{"error_mag":error_mag}) userlist=[ {"name":"alex","gender":"男","email":"alex@163.com"} ] def home(request): if request=="POST": u=request.POST.get("username") g=request.POST.get("gender") e=request.POST.get("email") temp={"name":u,"gender":g,"email":e} userlist.append(temp) return render(request,"home.html",{"user_list":userlist})