zoukankan      html  css  js  c++  java
  • 第二章:Django项目实例

    1. 安装Django

    pip install django 

    查看django版本:

     

    2. 创建Django项目

    打开命令行,然后cmd到需要创建代码的目录,运行如下命令即可创建:

    $ django-admin startproject mysite

     创建后项目目录如下:

    mysite/

      manage.py 项目的命令行工具

      mysite/ 与项目根目录同名,存放的是项目相关的配置文件、全局路由等

        __init__.py   指定dev05为一个包

        settings.py    Django 项目的配置文件

        urls.py       Django 项目的 URL 声明,就像你网站的“目录”

        wsgi.py      作为你的项目的运行在 WSGI 兼容的Web服务器上的入口

        asgi.py wsgi.pyasgi可调用对象可以一个接一个地链接在一起,以处理web请求 

    3. 创建应用 

    在每个django项目中可以包含多个应用,相当于一个大型项目中的分系统、子模块、功能部件等,相互之间比较独立。 

    应用和项目的区别:应用是一个专门做某件事的网络应用程序——比如博客系统,或者公共记录的数据库,或者简单的投票程序。项目则是一个网站使用的配置和应用的集合。项目可以包含很多个应用。应用可以被很多个项目使用。 

    应用的创建方式如下,需要在manage.py所在目录下创建,命令如下:python manage.py startapp polls

    目录结果如下:

    mysite/

      manage.py

      mysite/

        __init__.py   

        settings.py    

        urls.py       

        wsgi.py      

        asgi.py

      polls/

        __init__.py

        admin.py

        apps.py

        models.py

        tests.py

        views.py

        migrations/

          __init__.py

    4. 编写路由

    路由都在urls中,它将浏览器输入的url映射到相应的业务处理逻辑。

    5. 编写业务处理逻辑

    业务处理函数一般都放在views.py文件中。

     

      通过如上2步操作,可以实现将test/url指向test()函数,它接收到请求后,会返回“hello world”字符串。 

    6. 运行web服务

    如上配置后,通过python manage.py runserver可以启动web服务,启动后输入链接http://127.0.0.1:8000/test/ 404报错,是因为找不到对应服务,需要将新创建的应用添加到应用的配置里面,即:mysite/setting/INSTALLED_APPS,具体如下:

      再次启动:

    6.1 提示信息

    启动时,会提示: 

    通过运行 python manage.py migrate可以将django自带数据库属性迁移过来,即创建一些表

     6.2 端口号及IP

    默认情况下,runserver命令会将服务器设置为监听本机内部ip8000端口。如果需要修改端口时,可以通过命令行参数修改,即:python manage.py runserver 8080 ;如果需要监听本机ip时,可以通过如下命令执行:python manage.py runserver 本机IP:端口号。

    7. 返回html文件

    html文件一般统一放到templates(这个名称最好不要修改)中,具体显示如下:

      修改对应的test()函数,将返回值定向到html文件,具体如下:

     

    此时输入http://127.0.0.1:8000/test/,会提示test.html不存在

      那是因为django不知道html的存放路径,所以需要修改setting中文件的配置项,具体如下:

      DIRS输出具体路径如下:

      重新启动后,再次查看,即可展示test.html对应文件信息。

    8. js文件

    静态js文件,可以通过文件添加,也可以用在线文件,目前使用在线文件,加载方式如下:

    9. 发送接收数据

    设计一个页面,输入用户名和密码,点击提交后,展示对应的用户名和密码。

    9.1 form表单格式实现

    9.1.1.返回结果为字符串

     test.html:

    {% load static %}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>mysite测试</title>
        <script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
    </head>
    <body>
        <h1>输入用户名密码:</h1>
        <form action="/getinfo/" method="POST">
            <input type="text" name="username"/>
            <input type="password" name="password"/>
            <input type="submit" value="提交"/>
        </form>
    </body>
    </html>

    views.py

    from django.shortcuts import render
    from django.shortcuts import HttpResponse
    
    # Create your views here.
    
    
    def test(request):
        # return HttpResponse("hello world!")
        return render(request,'test.html')
    
    def getinfo(request):
        username = request.POST.get("username")
        password = request.POST.get("password")
        responsestr = "username = {},password = {}".format(username,password)
        print(responsestr)
        return HttpResponse("hello world!")

    urls.py

    from django.contrib import admin
    from django.urls import path
    from polls import views as views1
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('test/', views1.test),
        path('getinfo/', views1.getinfo),
        # path(r'^test/', views1.test)
    ]

      

      9.1.2.返回结果为html

    test.html 

    {% load static %}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>mysite测试</title>
        <script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
    </head>
    <body>
        <h1>输入用户名密码:</h1>
        <form action="/getinfo/" method="POST">
            <input type="text" name="username"/>
            <input type="password" name="password"/>
            <input type="submit" value="提交"/>
        </form>
    </body>
    </html>

     getinfo.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>用户名和密码展示结果</title>
    </head>
    <body>
        <p>用户名:{{data.user}}</p>
        <p>密码:{{data.pwd}}</p>
    <!--    表格格式实现如下:-->
    <!--    <table>-->
    <!--        <thead>-->
    <!--            <th>用户名</th>-->
    <!--            <th>密码</th>-->
    <!--        </thead>-->
    <!--        <tbody>-->
    <!--            <td>{{data.user}}</td>-->
    <!--            <td>{{data.pwd}}</td>-->
    <!--        </tbody>-->
    <!--    </table>-->
    </body>
    </html>

    views.py

    from django.shortcuts import render
    from django.shortcuts import HttpResponse
    
    # Create your views here.
    user_list = []
    
    
    def test(request):
        # return HttpResponse("hello world!")
        return render(request,'test.html')
    
    def getinfo(request):
        username = request.POST.get("username")
        password = request.POST.get("password")
        temp = {"user":username,"pwd":password}
        responsestr = "username = {},password = {}".format(username,password)
        print(responsestr)
        return render(request,'getinfo.html',{"data":temp})

    urls.py

    from django.contrib import admin
    from django.urls import path
    from polls import views as views1
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('test/', views1.test),
        path('getinfo/', views1.getinfo),
        # path(r'^test/', views1.test)
    ]

      

    9.2 table样式实现

    一般ajax都是处理后端数据的,很少用来渲染前端页面,所以table样式实现,以返回字符串形式为例说明。

    test.html 

    {% load static %}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>mysite测试</title>
        <script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
    </head>
    <body>
        <h1>输入用户名密码:</h1>
        <input type="text" id="username" name="username"/>
        <input type="password" id="password" name="password"/>
        <input type="button" value="提交" onclick="getusername()"/>
    
        <script>
            function getusername(){
                var usename = $("#username").val()
                var password = $("#password").val()
                $.ajax({
                    url: '/getinfo/',
                    data: {'usename':usename,'password':password},
                    type: 'POST',
                    dataType: 'json',
                    success: function(res){
                        console.log(res)
                    }
                })
                }
        </script>
    </body>
    </html>

     getinfo.html 

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>用户名和密码展示结果</title>
    </head>
    <body>
        <p>用户名:{{data.user}}</p>
        <p>密码:{{data.pwd}}</p>
    <!--    表格格式实现如下:-->
    <!--    <table>-->
    <!--        <thead>-->
    <!--            <th>用户名</th>-->
    <!--            <th>密码</th>-->
    <!--        </thead>-->
    <!--        <tbody>-->
    <!--            <td>{{data.user}}</td>-->
    <!--            <td>{{data.pwd}}</td>-->
    <!--        </tbody>-->
    <!--    </table>-->
    </body>
    </html>

     views.py 

    from django.shortcuts import render
    from django.shortcuts import HttpResponse
    from django.shortcuts import HttpResponseRedirect
    
    # Create your views here.
    
    def test(request):
        # return HttpResponse("hello world!")
        return render(request,'test.html')
    
    def getinfo(request):
        username = request.POST.get('usename')
        password = request.POST.get('password')
        # temp = {"user":username,"pwd":password}
        responsestr = "username = {},password = {}".format(username,password)
        print(responsestr)
        return HttpResponse(responsestr)

     urls.py 

    from django.contrib import admin
    from django.urls import path
    from polls import views as views1
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('test/', views1.test),
        path('getinfo/', views1.getinfo),
        # path(r'^test/', views1.test)
    ]

      

     

     

  • 相关阅读:
    hdu 1551 恶心的卡精度题
    ubuntu下升级firefox
    清理windows垃圾
    hdu 1575 矩阵快速幂
    右键菜单中添加用记事本打开(转)
    hdu 1525 博弈
    PHP字符串函数(转)
    笔试注意事项
    .NET 2.0面向对象编程揭秘 继承
    李开复:21世纪7种人才最抢手
  • 原文地址:https://www.cnblogs.com/like1824/p/15305549.html
Copyright © 2011-2022 走看看