django獲取用戶數(shù)據(jù)方法及FBV和CBV

獲取用戶數(shù)據(jù)

FBV:function base views
CBV:class base views
定義類時(shí),獲得用戶請(qǐng)求時(shí),會(huì)自動(dòng)調(diào)用父類View的dispath方法。
所以可以讓自定義類繼承父類dispath方法,這樣可以自我定義一些功能。
url.py

from django.contrib import admin
from django.urls import path
from cmdb import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/', views.index),
    path('login/', views.login),
    path('home/', views.Home.as_view()),

]

app下的view.py

from django.shortcuts import render, HttpResponse


# Create your views here.


def index(request):
    return HttpResponse('<h1>index</h1>')


def login(request):
    if request.method == 'GET':
        return render(request, 'login.html')
    elif request.method == 'POST':
        v = request.POST.get('gender')
        print(v)
        user = request.POST.get('user')
        pwd = request.POST.get('pwd')
        print(user, pwd)
        love = request.POST.getlist('love')
        print(love)
        city = request.POST.getlist('city')
        print(city)
        file = request.FILES.get('file')
        print(file, type(file))
        import os
        file_path = os.path.join('upload', file.name)
        f = open(file_path, 'wb')
        # from django.core.files.uploadedfile import InMemoryUploadedFile
        for content in file.chunks():
            f.write(content)

        f.close()

        return render(request, 'login.html')
    else:
        pass


from django.views import View


class Home(View):
    def dispatch(self, request, *args, **kwargs):
        print('before')
        result = super(Home, self).dispatch(request, *args, **kwargs)
        print('after')
        return result

    def get(self, request):
        print('method:', request.method)
        return HttpResponse('<b>ok</b>')

    def post(self, request):
        pass

前端.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="/login/" method="POST" enctype="multipart/form-data">
        <p>
            <input name="user" type="text" placeholder="用戶名">
        </p>
        <p>
            <input name="pwd" type="password" placeholder="密碼">
        </p>
        <p>
            男:<input type="radio" value="1" name="gender">
            女:<input type="radio" value="0" name="gender">
        </p>
        <p>
            籃球:<input type="checkbox" value="1" name="love">
            足球:<input type="checkbox" value="2" name="love">
            棒球:<input type="checkbox" value="3" name="love">
        </p>
        <p>
            <select name="city" multiple>
                <option value="北京">北京</option>
                <option value="上海">上海</option>
                <option value="杭州">杭州</option>
                <option value="蚌埠">蚌埠</option>
                <option value="淮北">淮北</option>
            </select>
        </p>
        <p>
            <input type="file" name="file">
        </p>
        <p>
            <input type="submit" value="提交">
        </p>
    </form>
</body>
</html>

路由系統(tǒng)

from django.urls import path, re_path
urlpatterns = [
    re_path('index/(\d+)/(\d+)/', views.index, name='index'),
    re_path('detail-(?P<nid>\d+)-(?P<uid>\d+).html/', views.detail, name='detail'),
]

def index(request, *args, **kwargs):
    print(*args, **kwargs)
    print(request.path_info)
    url = reverse('index', args=(1, 2))
    print('url:', url)
    return render(request, 'index.html', {'user_dict': USER_DICT})

<form method="post" action="{% url 'index' 1 2 %}">
        <input type="text" name="user" placeholder="用戶">
        <input type="submit" value="提交">
</form>

路由分發(fā)

在django中創(chuàng)建多個(gè)app時(shí),為了有效的分類url
工程名目錄下urls.py

from django.urls import path, re_path, include
urlpatterns = [
    path('cmdb/', include('cmdb.urls')),
]

在app下創(chuàng)建urls.py

from django.conf.urls import url,include
from django.contrib import admin
from app02 import views

urlpatterns = [
                url(r'^login/', views.login),
            ]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 22年12月更新:個(gè)人網(wǎng)站關(guān)停,如果仍舊對(duì)舊教程有興趣參考 Github 的markdown內(nèi)容[https://...
    tangyefei閱讀 35,421評(píng)論 22 257
  • 已經(jīng)同步到gitbook,想閱讀的請(qǐng)轉(zhuǎn)到gitbook: Django 1.10 中文文檔 URL dispatc...
    leyu閱讀 14,441評(píng)論 0 16
  • Refer to: www.threemeal.com/blog/12/ 中間件 中間件是一個(gè)鉤子框架,它們可以介...
    蘭山小亭閱讀 16,790評(píng)論 9 164
  • 很多人以為腎炎只是單一的一種疾病,若您是這么想,那就大錯(cuò)特錯(cuò)了,臨床上,腎炎分為急性腎炎和慢性腎炎,此外,腎炎又有...
    健康小貼士閱讀 677評(píng)論 0 0
  • 春雨朦朧,下班回! 情暖花開(kāi),盼團(tuán)圓。 青山綠水,獨(dú)木橋。 小鳥(niǎo)依人,朱顏紅。 一滴涕血,兩行淚。 綠草游云,白馬過(guò)。
    照亮Br閱讀 284評(píng)論 2 4

友情鏈接更多精彩內(nèi)容