zoukankan      html  css  js  c++  java
  • Django讲解

    什么是Django?

    Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。

    Django框架介绍:

    Django 项目是一个python定制框架,它源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。Django 框架的核心组件有:
    1. 用于创建模型的对象关系映射
    2. 为最终用户设计的完美管理界面
    3. 一流的 URL 设计
    4. 设计者友好的模板语言
    5. 缓存系统。

    创建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>
    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),
    ]
    url文件

    显示界面:

    配置静态目录:

    css、jss文件

    首先创建目录存放静态文件

    我这里用的static

    里面写css样式

    body{
        background-color: #eeeeee;
    }
    commends

    setting配置让html访问静态文件:

    STATICFILES_DIRS=(
        os.path.join(BASE_DIR,'static'),
    )
    setting

    再次访问,生效

    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})#返回用户名密码不匹配
    views
    <!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>
    login

    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})
    前端
  • 相关阅读:
    Compiling LIBFFM On OSX 10.9
    Linux shell 脚本入门教程+实例
    Understanding the Bias-Variance Tradeoff
    Learning How To Code Neural Networks
    MXNet设计和实现简介
    数据需求统计常用awk命令
    Deal with relational data using libFM with blocks
    MATLAB 在同一个m文件中写多个独立的功能函数
    Debug 路漫漫-06
    MATLAB 求两个矩阵的 欧氏距离
  • 原文地址:https://www.cnblogs.com/AbeoHu/p/6135022.html
Copyright © 2011-2022 走看看