zoukankan      html  css  js  c++  java
  • Python学习---Django的基础学习

    django实现流程

    Django学习框架:


        #安装: pip3 install django
              添加环境变量
        #1  创建project
           django-admin startproject mysite
           ---mysite
              ---settings.py
              ---url.py
              ---wsgi.py
           ---- manage.py(启动文件) 
        #2  创建APP      
           python mannage.py startapp  app01
        #3  settings配置    【Static files (CSS, JavaScript, Images)】
           TEMPLATES
           STATICFILES_DIRS=(
                os.path.join(BASE_DIR,"statics"),
            )
           STATIC_URL = '/static/'
           #  我们只能用 STATIC_URL,但STATIC_URL会按着你的STATICFILES_DIRS去找
        #4  根据需求设计代码
               url.py
               view.py
        #5  使用模版
           render(req,"index.html")  
        #6  启动项目
           python manage.py runserver  127.0.0.1:8080
        #7  连接数据库,操作数据
           model.py

    Django的安装及项目创建

    安装: pip3 install django

    image

    创建Django项目mysite以及子项目blog

    image

    项目文件介绍

    image

    初试牛刀

    案例一:基本使用

    settigs.py:  更改Django2.0.1的配置,更新为之前的路径配置

    'DIRS': [os.path.join(BASE_DIR, 'templates')],  # Django以前版本

    image

    views.py

    from django.shortcuts import render, HttpResponse
    # request里面封装了请求的所有的信息
    # HttpResponse:跟request一样,返回的信息,可以呈现给页面
    def hello(request):
        return HttpResponse('<h1>hello world</h1>')  # 多了一层HTML渲染

    mysite2/urls.py

    from django.contrib import admin
    from django.urls import path
    from blog import views
    urlpatterns = [
        path('admin/', admin.site.urls),
        path(r'hello/', views.hello)  # 将路径名跟函数进行映射
    ]

    ]

    启动服务端:

    python manage.py runserver 8080

    image

    另一种启动方式:pycharm提供,默认8000端口,可以进行修改,本文用8080

    image

    注意:[如果有修改内容,修改后可以直接在浏览器内运行,python内部已经处理]

    界面呈现:

    image

    案例二: 调用HTML实现页面渲染

    settigs.py:更改Django2.0.1的配置,更新为之前的路径配置

    'DIRS': [os.path.join(BASE_DIR, 'templates')],  # 设置templates的路径为Django以前版本
    # 'DIRS': [],      # 注释掉该行,此为Django 2.0.1最新版本
    # 'django.middleware.csrf.CsrfViewMiddleware', # 注释掉该行

    mysite2/urls.py

    from django.contrib import admin
    from django.urls import path
    from blog import views
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path(r'hello/', views.hello)  # 将路径名跟函数进行映射

    templates/today.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Django项目</title>
    </head>
    <body>
    <h1> hello world, 早安,世界</h1>
    <h2> 现在是北京时间:{{ today }}</h2>
    </body>
    </html>

    views.py

    from django.shortcuts import render
    import datetime
    # request里面封装了请求的所有的信息
    def hello(request):
        # render底部是调用HttpResponse来实现渲染的,Django里面返回给页面的都是HttpResponse对象
        # render(): 用来渲染浏览器显示,配合HTML实现数据的交换
        # 这里第一个参数必须是rquest, 第二个参数是我们页面HTML的名称, 第三个参数是传递的参数
        # 这里直接写HTML名称是因为Django将参数封装再来settings.py文件内
        # 'DIRS': [os.path.join(BASE_DIR, 'templates')],  # Django以前版本
        today = datetime.datetime.now()
        return render(request, "today.html", {"today": today})

    页面呈现

    image

     

    案例三:接收前台数据并返回前台数据

    settigs.py:更改Django2.0.1的配置,更新为之前的路径配置

    'DIRS': [os.path.join(BASE_DIR, 'templates')],  # 设置templates的路径为Django以前版本
    # 'DIRS': [],      # 注释掉该行,此为Django 2.0.1最新版本
    # 'django.middleware.csrf.CsrfViewMiddleware', # 注释掉该行

    views.py

    from django.shortcuts import render, HttpResponse
    import datetime
    def userInfo(request):
        user_list = []
        # 这里需要判断前台数据提交的方法是POST还是GET的[大写]
        if request.method == "POST":
            username = request.POST.get("username", None)
            sex = request.POST.get("sex", None)
            email = request.POST.get("email", None)
            user = {"username": username, "sex": sex, "email": email}
            print(user)
            user_list.append(user)
        return render(request, 'index.html', {"user_list": user_list})  # 用{}传递一个对象给前端

    mysite2/urls.py

    from django.contrib import admin
    from django.urls import path
    from blog import views
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path(r'userInfo/', views.userInfo),  # 将路径名跟函数进行映射
    ]

    templates/index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
    </head>
    <body>
        <form method="post" action="/userInfo/" name="userInfo">
            <p>姓名<input type="text" name="username"></p>
            <p>性别<input type="text" name="sex"></p>
            <p>邮箱<input type="text" name="email"></p>
            <p><input type="submit" value="提交"></p>
        </form><hr><hr>
        <table border="1">
            <tr>
                <th>姓名</th>
                <th>性别</th>
                <th>邮箱</th>
            </tr>
            {% for i in user_list %}    {#Django里面封装的模版语法,用于for循环#}
                <tr>
                    {# 这里是变量,所以需要2个{}来进行变量引用[规定的] #}
                    <th>{{ i.username }}</th>  {# 这里类似字典的取值 i[username] #}
                    <th>{{ i.sex }}</th>       {# 这里类似i[sex] #}
                    <th>{{ i.email }}</th>     {# 这里类似i[email] #}
                </tr>
            {% endfor %}                {# 注意结束for循环 #}
        </table>
    </body>
    </html>

    页面呈现

    image

    另:如果前台认证错误,则需要更改一个django安全的配置

    image

    settings.py

    image

  • 相关阅读:
    Bootstrap按钮
    Bootstrap表单
    Bootstrap表格
    Bootstrap列表
    jq 的onchange事件
    php 跳出循环的几种方式
    php变量和字符串连接符——点
    php 从2维数组组合为四维数组分析
    mysql 删除表中记录
    mysql 聚合函数
  • 原文地址:https://www.cnblogs.com/ftl1012/p/9397660.html
Copyright © 2011-2022 走看看