zoukankan      html  css  js  c++  java
  • WEB框架之-Django入门

    安装Django

    pip3 install diango

    安装好之后, python安装目录下的Scripts目录下会有:django-admin.exe

    添加 C:Program FilesPython36Scripts 到环境变量path中

    创建project

    注意:如上所示,如果不切换指定目录,则会在当前目录C:UsersAdministrator下创建名为mysite的工程

    创建成功后,会在C:Program FilesPython36Scripts目录下生成一个mysite目录,mysite目录结构如下:

    mysite
            -mysite
                    -__init__.py
                    -settings.py      #配置文件
                    -urls.py          #url对应关系
                    -wsgi.py          #遵循WSGI规范,实际用uwsig+nginx
            -manage.py                #管理Django规范,这里可以执行:
                                                --python manage.py
                                                --python manage.py start xx
                                                --python manage.py makemigrations
                                                --python manage.py migrate

    启动django工程

    通过python manage.py runserver 就可以启动上述创建的mysite,这里也可以加参数 127.0.0.1:8001,这样就能定义启动的端口,启动过程如下:

    然后登陆http://127.0.0.1:8000/

    也可以通过Pycharm创建Django工程,步骤如下:

     

    Pycharm启动Django工程,步骤如下:

    也可以先指定端口

    启动Django工程

    创建app

    python manage.py startapp app名称

    也可以在pycharm的console中去创建

    创建完后生成如下的目录结构:

    在views.py里添加如下代码:

    from django.shortcuts import HttpResponse
    
    def home(request):
        return HttpResponse('<h1>CMDB</h1>')

    同时在mysite目录下urls.py里添加如下:

    from cmdb import views
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('ab.html/', views.home),
    ]

    登录成功界面显示如下:

    关于app目录的解释:

    migrations   存放修改表结构时的记录

    admin.py   Django为我们提供的后台管理

    apps.py      配置当前app

    models.py    ORM,写指定的类 通过命令就可以创建数据库结构

    tests.py     用于做单元测试

    views.py      业务代码

    写一个简单的例子

    首先注释掉settings.py配置文件中的一行内容:

    在cmdb下的views.py里写如下代码:

    from django.shortcuts import render
    
    def login(request):
        return render(request,'login.html')

    可以把login.html文件放到templates目录下

    这里的login.html文件不用指定绝对路径,只需要在settings.py配置文件中配置一下路径即可:

    在mysite目录下的urls.py写如下代码:

    from cmdb import views
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('login/', views.login),
    ]

    整个目录如下:

    登录效果如下:

    关于静态文件的存放

     目录结构如下:

    将css以及js放在一个static目录下

    login.html代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link rel="stylesheet" href="/static/common.css" />
        <style>
            label{
                 80px;
                text-align: right;
                display: inline-block;
            }
        </style>
    </head>
    <body>
        <form action="/login/" method="post">
            <p>
                <label for="username">用户名:</label>
                <input id="username" type="text" />
            </p>
            <p>
                <label for="password">密码:</label>
                <input id="password" type="text" />
                <input type="submit" value="提交" />
            </p>
        </form>
        <script src="/static/jquery-1.12.4.js"></script>
    </body>
    </html>

    static目录下common.css文件中配置样式:

    body{
        background-color: darkgray;
    }

    settings.py配置文件中的配置:

    STATIC_URL = '/static/'
    STATICFILES_DIRS = (
        os.path.join(BASE_DIR, 'static'),    #这是一个元组,所以逗号一定要加,不加Django就启动不了
    )

    效果图如下:

    获取用户的信息

    views.py中的代码如下:

    from django.shortcuts import render
    from django.shortcuts import redirect
    
    def login(request):
        print(request.method)
        error_msg= ""
        if request.method == "POST":
            user = request.POST.get("user",None)
            pwd = request.POST.get("pwd",None)
            print(user,pwd)
            if user == "root" and pwd == "123":
                return redirect('http://www.baidu.com')
            else:
                error_msg = "用户名或密码错误"
        return render(request,'login.html',{'error_msg':error_msg})

    login.html代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link rel="stylesheet" href="/static/common.css" />
        <style>
            label{
                 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_msg }}</span>
            </p>
        </form>
        <script src="/static/jquery-1.12.4.js"></script>
    </body>
    </html>

    效果如下:

    如果输入的用户名或密码不匹配,则

     

    如果正确,则会跳转到百度。

    下面是一个完整的例子

     

    views.py中的代码如下:

    from django.shortcuts import render
    from django.shortcuts import redirect
    
    def login(request):
        print(request.method)
        error_msg= ""
        if request.method == "POST":
            user = request.POST.get("user",None)
            pwd = request.POST.get("pwd",None)
            print(user,pwd)
            if user == "root" and pwd == "123":
                return redirect('/home')
            else:
                error_msg = "用户名或密码错误"
        return render(request,'login.html',{'error_msg':error_msg})
    
    
    USER_LIST =[
        {"username":"tom","gender":"","email":"tom@163.com",},
        {"username":"jack","gender":"","email":"jack@126.com",},
        {"username":"lucy","gender":"","email":"lucy@163.com",}
    ]
    
    def home(request):
        if request.method == "POST":
            u = request.POST.get('username')
            g = request.POST.get('gender')
            e = request.POST.get('email')
            temp = {"username":u,"gender":g,"email":e}
            USER_LIST.append(temp)
        return render(request,'home.html',{'user_list':USER_LIST})

    urls.py中的代码如下:

    from django.contrib import admin
    from django.urls import path
    from cmdb import views
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('login/', views.login),
        path('home/', views.home),
    
    ]

    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="gender" placeholder="性别">
                <input type="text" name="email" placeholder="邮箱">
                <input type="submit" value="添加">
            </form>
        </div>
        <div>
            <table border="1">
                <thead>
                <tr>
                    <th>姓名</th>
                    <th>性别</th>
                    <th>邮箱</th>
                </tr>
                </thead>
                <tbody>
                    {% for row in user_list %}
                        <tr>
                            <td>{{ row.username }}</td>
                            <td>{{ row.gender }}</td>
                            <td>{{ row.email }}</td>
                        </tr>
                    {% endfor %}
                </tbody>
            </table>
        </div>
    </body>
    </html>

    login.html的代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link rel="stylesheet" href="/static/common.css" />
        <style>
            label{
                 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_msg }}</span>
            </p>
        </form>
        <script src="/static/jquery-1.12.4.js"></script>
    </body>
    </html>

    运行结果如下:

    输入正确的用户名和密码点击提交,跳转到home页面

    点击添加按钮可以添加新的数据:

  • 相关阅读:
    如何配置docker的镜像源?
    ubuntu18.04下dns如何设置?
    ubuntu 18.04上执行buildman安装了交叉工具链之后编译报错"aarch64-linux/7.3.0/cc1: error while loading shared libraries: libmpfr.so.4: cannot open shared object file: No such file or directory"如何处理?
    iptables执行时报错"iptables : Couldn't load target `standard':No such file or directory"如何处理?
    Resharper 2019.1.1 破解
    Mac 使用笔记
    SpringBoot使用Nacos配置中心
    Springcloud gateway获取post请求内容
    scp命令详解
    Jdk8之lambda表达式的使用及流式算法
  • 原文地址:https://www.cnblogs.com/cyfiy/p/9890496.html
Copyright © 2011-2022 走看看