• Django 基本使用


    Django 基本使用

    Django 安装
    pip install django
    
    Django 创建项目
    django-admin startproject 项目名称
    
    Django 创建应用
    python manage.py startapp app名称
    
    Django 启动项目
    python manage.py runserver IP:PORT
    
    添加一个显示当前时间的功能
    1. 修改view.py 文件
    from django.shortcuts import render,HttpResponse
    import datetime
    
    def timer(request):
        now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        return HttpResponse(now)
    
    1. 修改urls.py 文件
    from django.contrib import admin
    from django.urls import path
    from vedio import views
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('timer/', views.timer),
    ]
    
    跳转到指定HTML页面
    1. 在templates目录下添加一个HTML文件
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    登录
    </body>
    </html>
    
    1. 在 view.py 中指定跳转到的页面
    from django.shortcuts import render,HttpResponse
    
    def login(request):
        return render(request, "login.html")
    
    1. 修改 urls.py 文件
    from django.contrib import admin
    from django.urls import path
    from vedio import views
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('login/', views.login),
    ]
    

    获取页面提交的数据

    1. 在templates目录下添加一个HTML文件
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <form action="http://127.0.0.1:8000/auth/" method="post">
        {% csrf_token %}
        <input type="text" name="name">
        <input type="password" name="password">
        <input type="submit">
    </form>
    </body>
    </html>
    
    1. 在 view.py 中指定跳转到的页面
    from django.shortcuts import render,HttpResponse
    
    def login(request):
        return render(request, "login.html")
    
    def auth(request):
        print(request.POST)
        print(request.POST.get("name"))
        print(request.POST.get("password"))
        return HttpResponse("OK")
    
    1. 修改 urls.py 文件
    from django.contrib import admin
    from django.urls import path
    from vedio import views
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('login/', views.login),
        path('auth/', views.auth),
    ]
    

    PS:如果没有返回数据可以尝试注释掉 setting.py 中的 'django.middleware.csrf.CsrfViewMiddleware'

    获取通过URL传过来的值

    1. 修改urls.py文件
    from django.contrib import admin
    from django.urls import path
    from django.conf.urls import url
    from vedio import views
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        url(r"^login/(w*)$", views.login),
    ]
    
    1. 修改 view.py 文件
    from django.shortcuts import render,HttpResponse
    
    def login(request, name):
        return HttpResponse(name)
    
    有名分组
    1. 修改urls.py 文件
    from django.contrib import admin
    from django.urls import path
    from django.conf.urls import url
    from vedio import views
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        url(r"^login/(?P<分组名称>w*)$", views.login),
    ]
    
    1. 修改 view.py 文件
    from django.shortcuts import render,HttpResponse
    
    def login(request, 分组名称):
        return HttpResponse(分组名称)
    
    分发
    1. 修改urls.py 文件
    from django.contrib import admin
    from django.urls import path
    from django.conf.urls import url, include
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        url(r'vedio/', include('vedio.urls')),
    ]
    
    1. 在vedio 应用下新建一个urls.py 文件
    from django.contrib import admin
    from django.urls import path
    from django.conf.urls import url, include
    from vedio import views
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        url(r'^login/', views.login),
    ]
    
    反向解析
    1. 修改urls.py 文件
    from django.contrib import admin
    from django.urls import path
    from django.conf.urls import url
    from vedio import views
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        url(r"^login/(w*)$", views.login, name='login'),
    ]
    
    1. 修改 login.html 文件
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <form action="http://127.0.0.1:8000/{% url 'login' %}" method="post">
        <input type="text" name="name">
        <input type="password" name="password">
        <input type="submit">
    </form>
    </body>
    </html>
    
    Request 和 Response 对象的基本使用
    1. urls.py 文件的修改
    from django.contrib import admin
    from django.urls import path
    from django.conf.urls import url
    from vedio import views
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        url(r"^login/$", views.login, name='login'),
    ]
    
    1. view.py 文件的修改
    from django.shortcuts import render,HttpResponse,redirect
    
    def login(request):
        """
        request 中的属性和方法
        """
        print(request.method)  # 请求方式
        print(request.path)  # 请求路劲
        print(request.POST)  # POST 请求的数据
        print(request.GET)  # GET 请求的数据
        print(request.META)  # 请求头
        print(request.get_full_path())  # 请求的完整路径
        print(request.is_ajax())  # 判断请求是否是 Ajax请求
    
        """
        response 的三种形式
            HttpResponse()
            render()
            redirect() 重定向
        """
        # return HttpResponse('OK')
        # return render(request, 'login.html')
        # return redirect('login.html')
    
        name = ['GetcharZp', 'GetcharMcx']
        # return render(request, 'login.html', locals())
        import datetime
        now = datetime.datetime.now()
        return render(request, 'login.html', {"name": name, "now": now})
    
    1. login.html 文件的修改
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    返回一条数据:
    <!-- 深度查询 句点符 -->
    {{ name.0 }}
    
    <br>将数据以循环的形式输出:
    <ul>
    {% for foo in name %}
        <li> {{ forloop.late }} {{ forloop.counter }} {{ foo }}</li>
    {% endfor %}
        
    
    <br>当前时间(filter)
    <!-- 
    	date 时间过滤器 |date:"Y-m-d"
    	default 默认过滤器 |default:"改内容暂时还木有"
    	length 长度过滤器 |length
    	filesizeformat 文件大小过滤器 |filesizeformat
    	slice 切片过滤器 |slice:"1:3"
    	truncatechares 字符过滤器 |truncatechares:9
    	truncatewords 单词过滤器 |truncatewords:7
    	safe 标识标签不用转义 |safe
    -->
    {{ now|date:"Y-m-d" }}
    </ul>
    </body>
    </html>
    
    模板继承
    1. urls.py 文件的修改
    from django.contrib import admin
    from django.urls import path
    from vedio import views
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('index/', views.index),
    ]
    
    1. view.py 文件的修改
    from django.shortcuts import render,HttpResponse,redirect
    
    def index(request):
        return render(request, "index.html")
    
    1. index.html 文件的修改
    {% extends 'base.html' %}
    {% block content %}
    <p>GetcharZp Index</p>
    {% endblock %}
    
    1. 新建一个base.html 文件
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            * {
                margin: 0;
                padding: 0;
            }
            
            .header {
                 100%;
                height: 90px;
                background-color: #65ccff;
            }
        </style>
    </head>
    <body>
    <div class="header"></div>
    {% block content %}
    
    {% endblock %}
    </body>
    </html>
    
  • 相关阅读:
    C++之路进阶——codevs2439(降雨量)
    C++之路进阶——codevs2933(诗人小G)
    C++之路进阶——bzoj2879(美食节)
    C++之路进阶——bzoj1934(善意的投票)
    C++之路进阶——bzoj3876(支线剧情)
    C++之路进阶——codevs1281(Xn数列)
    八数码难题
    道路游戏
    细胞分裂
    最长链
  • 原文地址:https://www.cnblogs.com/GetcharZp/p/11627934.html
Copyright © 2020-2023  润新知