Django2.2 Templates 頁面渲染 數據列表跳轉 以及簡單的頁面模塊繼承


聲明:本博客用的為pycharm Django2.2,基於此內容,會簡單講解

  1. 數據庫傳參形式的增刪查改(完整小項目)
  2. 路由的 位置參數、關鍵字參數、以及html中反向解析路由
  3. request的表單傳遞
  4. html頁面分割與繼承

一、路由的三種傳參方式、以及路由的反向解析

    1.1位置參數:       

re_path(r'gettime/(\d+)/(\d+)/(\d+)/',views.get_time),

def get_time(request,hour,minute,second):
#普通傳參
# return HttpResponse("Time--> %d:%d:%d" %(hour,minute,second))

#正則表達式傳參
return HttpResponse("Time--> %s:%s:%s" % (hour, minute, second))

      所謂位置參數:即函數傳參時參數的書寫位置不能隨意改變,改變就會參數對應錯誤

    1.2關鍵字參數:

#關鍵字傳參 年月日(在url指定順序,函數接受無需排序----P(大寫)---》參數的簡寫)
re_path(r'getdata/(P<year>\d+)/(P<month>\d+)/(P<day>\d+)/',views.get_data)


def get_data(request,day,month,year):
    return HttpResponse("無序傳參 Data %s :%s :%s" %(year,month,day))

      關鍵字參數我們可以看出,參數位置有路由決定,書寫接收參數時不影響輸出結果

    1.3路由的反向解析(以后推薦寫法)

#跟路由寫法(incude里加上namespace屬性)
 path(r'App2/',include(('App2.urls','App2'),namespace='second')),

#子路由寫法(路由后面加上name屬性)
#html中反向解析路由
    path(r'learn/',views.learn,name="learn"),

#頁面引用解析路由寫法
<h3>班級列表,點擊查看</h3>
    {% for grade in grade_list %}
        <li><a href="{% url 'second:getstudent' g_id=grade.id %}">{{ grade.g_name }}</a></li>
    {% endfor %}
    <a href=""></a>

二、頁面分割與繼承:

  為什么要頁面分割:當你寫一個網頁時,頁面間比如說頂部導航欄多個頁面都有,這時候就可以用繼承來寫,節約的重復寫的繁瑣工作

#基本頁面,這樣寫着,表示布局
{% block header %} {% endblock %} {% block search %} {% endblock %} {% block content %} {% endblock %} {% block footer %} {% endblock %}

#繼承(不用寫body啥的了)
{% extends "base.html" %}
{% block header %}
<h1>原先父類的---這是一個頭! header</h1>
{% endblock %}


2.
% block content %}
<h1>繼承顯示 content</h1>
{% endblock %}
#兩者均會顯示
{% block header %}
{{ block.super }}
<h1>覆蓋繼承文件的 header</h1>
{% endblock %}

三、實例演示:數據庫傳參,url列表跳轉

  那么問題來了,這有什么用呢,----------------其實用處大大滴(首先能做到反基本的爬取,可以做列表以及列表的詳情頁)---------自己上代碼

 

 

 

#數據庫傳參實例
    path(r'grades/',views.grades,name='getgrade'),
    path(r'students/<int:g_id>/',views.students,name='getstudent'),
    # path(r'gettime/<int:hour>/<int:minute>/<int:second>/',views.get_time),

    #顯示學生詳情
    path(r'student_detil/<int:id>/',views.student_detil,name='studentdetil'),
    #刪除學生
    path(r'delete_student/<int:s_id>/',views.delete_student,name='deletestudemt'),
#顯示學生詳情
def student_detil(request,id):
    student=Student.objects.get(pk=id)
    # name=student.s_name
    # grade=student.s_grade_id
    # stu_id=Student.objects.filter(s_grade_id=s_grade_id)
    return render(request,'student_delit.html',context={"student":student,})

#刪除學生
def delete_student(request,s_id):
    student=Student.objects.get(pk=s_id)
    student.delete()

    return HttpResponse("學生"+student.s_name+"刪除成功!")


def do_create_student(request):
    print(request.method)
    sName=request.POST.get('sName')
    grade_id=request.POST.get('choose')
    print(grade_id)
    student=Student()
    student.s_name=sName
    student.s_grade_id=grade_id
    student.save()
    return HttpResponse(sName+"--->170"+grade_id+"班學生"+"添加成功")
 <h3>班級列表,點擊查看</h3>
    {% for grade in grade_list %}
        <li><a href="{% url 'second:getstudent' g_id=grade.id %}">{{ grade.g_name }}</a></li>
    {% endfor %}
    <a href=""></a>




 <h3>170{{ g_id }}班的學生列表如下:</h3>
    <ul>
        {% for student in students_list %}
            <li><a href="{% url 'second:studentdetil' id=student.pk %}">{{ student.s_name }}</a></li>
        {% endfor %}
    </ul>

    <hr>
    <h2>添加學生信息</h2>
    <form action="{% url 'second:do_create_student' %}" method="post">
        姓名:<input type="text" name="sName">
        所在班級:
        <select name="choose">
            <option value="1">1701班</option>
            <option value="2">1702班</option>
            <option value="3">1703班</option>
            <option value="4">1704班</option>
            <option value="5">1705班</option>
            <option value="6">1706班</option>
        </select>
        <input type="submit" value="確定添加該學生">
    </form>
    <hr>
    <button><a href="{% url 'second:getgrade' %}">返回班級列表</a></button>



 <h1>學生情況:</h1>

    <li>姓名{{ student.s_name }}</li>
    <li>所在的班級:170{{ student.s_grade_id }}</li>
    <button><a href="{% url 'second:deletestudemt' s_id=student.pk %}">刪除該學生</a></button>

運行截圖

 

 

 

 

 四、下期更新會話的登錄注冊,以及會話類型的基本講解,希望大家喜歡!!!

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM