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>
    

 




posted @ 2016-12-08 22:45  aipython  阅读(52)  评论(0)    收藏  举报