python的学习第18天 正则 django
django
正则
就两个方法,一个test和一个exec

django
命令创建一个django项目
先安装: pip 命令安装
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple django 就会安装上
执行django-admin.exe startproject mysite 创建一个Mysite名次的项目 会在当前目录下生成一个mysite的目录 里面有 mysite目录和manage.py 文件
![]()
![]()
![]()
如果找不到django-admin.exe 命令就是环境变量没设置 一般在python目录下面的Scripts目录里面
![]()
运行刚才创建的项目,要先进入刚才创建的目录,或这直接绝对路径 manage.py
python manage.py runserver

访问8000端口看看:

还可以这么创建
django-admin.exe startproject mysite 127.0.0.1:80 直接制定ip和端口号
突然银角有个神奇的想法:
![]()
![]()
继续访问地址:
![]()
![]()
好神奇自己的函数显示了!!!
![]()
一般都会创建很多APP来分类来管理自己的项目 :python manage.py startapp cmdb 创建的目录结构如上图
![]()
例子:一个登录的html
先在当前目录下新建一个templates 文件目录 里面写一个login.html 内容为:
<!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="password" /> <input type="submit" value="提交" /> <span style="color: red;">{{ error_msg }}</span> </p> </form> <script src="/static/jquery.min.js"></script> </body> </html>

views.py内容为:
from django.shortcuts import render
# Create your views here.
from django.shortcuts import HttpResponse
def login(request):
return render(request,'login.html')
def index(request):
return HttpResponse('login.html')


注销是为了防止表达提交的时候报错:注销就不会报后面那个CSRF的错误了以后会解决暂时还不会


最后效果:

一般静态的要单独建立一个目录存放:
在setting.py里面:
STATICFILES_DIRS=(
os.path.join(BASE_DIR, 'static'),
)
![]()
一个例子登录密码验证错误:
![]()
templates里面的login.html为:
<!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"> {# //注意login后面没有/#} <p> <label for="username">用户名:</label> <input name="user" id="username" type="text" /> </p> <p> <label for="password">密码:</label> <input name="pwd" id="password" type="password" /> <input type="submit" value="提交" /> <span style="color: red">{{ error_msg }}</span> {# 2个{} 里面的变量error_msg 会被后台的dj变量替换#} </p> </form> </body> </html>
views.py内容:
from django.shortcuts import render # Create your views here. from django.shortcuts import HttpResponse from django.shortcuts import render #到人render模块就是读templates文件里面的内容 from django.shortcuts import redirect # def home(request): # return HttpResponse('<h1>hello,world</h1>') def fuck(request): return HttpResponse('<h1>你好2016</h1>') def login(request): # return render(request,'login.html') #默认 settings里面 DIRS': [os.path.join(BASE_DIR, 'templates')] error_msg = "" if request.method == "POST": user = request.POST.get('user',None) pwd = request.POST.get('pwd',None) if user == 'admin' and pwd == "admin": return redirect('home.html') else: error_msg="密码错误或者用户名称错误" return render(request,'login.html',{'error_msg':error_msg})
最后一个例子:

views.py里面的内容:
from django.shortcuts import render # Create your views here. from django.shortcuts import HttpResponse from django.shortcuts import render #到人render模块就是读templates文件里面的内容 from django.shortcuts import redirect # def home(request): # return HttpResponse('<h1>hello,world</h1>') def fuck(request): return HttpResponse('<h1>你好2016</h1>') def login(request): # return render(request,'login.html') #默认 settings里面 DIRS': [os.path.join(BASE_DIR, 'templates')] error_msg = "" if request.method == "POST": user = request.POST.get('user',None) pwd = request.POST.get('pwd',None) if user == 'admin' and pwd == "admin": return redirect('home.html') else: error_msg="密码错误或者用户名称错误" return render(request,'login.html',{'error_msg':error_msg}) USER_LIST = [ {'username':'alex','email':'aa@qq.com','gender':'男'} , {'username':'tom','email':'bb@qq.com','gender':'女'} , {'username':'jack','email':'cc@qq.com','gender':'男'} , ] def home(request): if request.method == "POST": u = request.POST.get('username') e = request.POST.get('email') g = request.POST.get('gender') temp = {'username':u,'email':e,'gender':g} USER_LIST.append(temp) return render(request,'home.html',{'user_list':USER_LIST})
templates里面home.html内容:
<!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 %} {#这是for循环的格式,必须有endfor结尾 还有 if 也是一样可以嵌套,里面的变量也是这样的格式会被views里面的替换掉,最后是字符串#} </table> </div> </body> </html>
urls.py内容:
"""day18 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 cmdb import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^home', views.home),
url(r'^login', views.login),
]
内容整理 1. 创建Django工程 django-admin startproject 工程名 2. 创建APP cd 工程名 python manage.py startapp cmdb 3、静态文件 project.settings.py STATICFILES_DIRS = ( os.path.join(BASE_DIR, "static"), ) 4、模板路径 DIRS ==> [os.path.join(BASE_DIR,'templates'),] 5、settings中 middlerware # 注释 csrf 6、定义路由规则 url.py "login" --> 函数名 7、定义视图函数 app下views.py def func(request): # request.method GET / POST # http://127.0.0.1:8009/home?nid=123&name=tom # request.GET.get('',None) # 获取请求发来的而数据 # request.POST.get('',None) # return HttpResponse("字符串") # return render(request, "HTML模板的路径") # return redirect('/只能填URL') 8、模板渲染 特殊的模板语言 -- {{ 变量名 }} def func(request): return render(request, "index.html", {'current_user': "tom"}) index.html <html> .. <body> <div>{{current_user}}</div> </body> </html> ====> 最后生成的字符串 <html> .. <body> <div>tom</div> </body> </html> -- For循环 def func(request): return render(request, "index.html", {'current_user': "tom", 'user_list': ['tom','jack']}) index.html <html> .. <body> <div>{{current_user}}</div> <ul> {% for row in user_list %} {% if row == "tom" %} <li>{{ row }}</li> {% endif %} {% endfor %} </ul> </body> </html> #####索引################# def func(request): return render(request, "index.html", { 'current_user': "tom", 'user_list': ['tom','jack'], 'user_dict': {'k1': 'v1', 'k2': 'v2'}}) index.html <html> .. <body> <div>{{current_user}}</div> <a> {{ user_list.1 }} </a> <a> {{ user_dict.k1 }} </a> <a> {{ user_dict.k2 }} </a> </body> </html> ###### 条件 def func(request): return render(request, "index.html", { 'current_user': "tom", "age": 18, 'user_list': ['tom','jack'], 'user_dict': {'k1': 'v1', 'k2': 'v2'}}) index.html <html> .. <body> <div>{{current_user}}</div> <a> {{ user_list.1 }} </a> <a> {{ user_dict.k1 }} </a> <a> {{ user_dict.k2 }} </a> {% if age %} <a>有年龄</a> {% if age > 16 %} <a>老男人</a> {% else %} <a>小鲜肉</a> {% endif %} {% else %} <a>无年龄</a> {% endif %} </body> </html>












浙公网安备 33010602011771号