django装飾器は登録状態を検出して操作します。
1、ログイン状態を検出する
base.py
The view proApp.baset.warpper didn't return an HttpResonse Object.It returned None instead.
解決方法:ユーザーsessionを判断したら、必ずリターン値を返します。
2、登録検査に成功しました。ルートは変更されていません。ページはジャンプしていません。
解決方法:redirect(「ジャンプ経路と名称」)方法、ページジャンプ
1、レンダーはログイン成功後のページを返し、このページを更新するとジャンプ前のページに戻ります。redirectはできません
2、レンダーは登録成功ページを返します。urlルート配布システムを経由しないです。つまり、ジャンプ後urlの試み関数は実行されません。このようにして、戻ってきたページのレンダリングは成功しませんでした。redirectは指定ページにジャンプし、ログインが成功すると、urlルートシステムでマッチングし、存在するマッピング関数があれば、対応するマッピング関数を実行します。
補足知識:Djangoの中間部品とクラスビュー
クラスビュー
関数ビュー:関数で定義されたビューを関数ビューと呼びます。
クラスビュー:クラスで定義されたビューをクラスビューと呼びます。
コードの可読性が良い
クラスビューは関数ビューに対してより高い多重性を持っています。
したがって、ほとんどのビューはクラスを使用して実装されます。
中間部品
Djangoのミドルウェアはライト級、最下層のプラグインシステムであり、Djangoの要求と応答処理過程に介入し、Djangoの入力または出力を修正することができる。中間部品の設計は開発者に無侵入型の開発方式を提供し、Djangoフレームのたくましさを強化しました。
中間部品を使用してDjango処理ビューの異なる段階で入力または出力に干渉することができます。
以上のdjango装飾器は登録状態を検出して操作します。小編集は皆さんに全部の内容を共有しています。参考にしてもらいたいです。よろしくお願いします。
base.py
def checkLogin(func):
"""
session
:param func:
:return:
"""
def warpper(request,*args,**kwargs):
if request.session.get('username', False):
return func(request, *args, **kwargs)
else:
return HttpResponse('/login')
return warpper
index.py:
from proApp import models, article, base
@base.checkLogin
def index(request):
dict = {
"article_list": article.getArticle(),
}
return render(request, 'index.html',dict)
1エラー:The view proApp.baset.warpper didn't return an HttpResonse Object.It returned None instead.
解決方法:ユーザーsessionを判断したら、必ずリターン値を返します。
2、登録検査に成功しました。ルートは変更されていません。ページはジャンプしていません。
解決方法:redirect(「ジャンプ経路と名称」)方法、ページジャンプ
from django.shortcuts import render,render_to_response,redirect
def checkLogin(func):
"""
session
:param func:
:return:
"""
def warpper(request,*args,**kwargs):
if request.session.get('username', False):
return func(request, *args, **kwargs)
else:
return redirect('/login')
return warpper
注意:renderとredirectの2点の違い:1、レンダーはログイン成功後のページを返し、このページを更新するとジャンプ前のページに戻ります。redirectはできません
2、レンダーは登録成功ページを返します。urlルート配布システムを経由しないです。つまり、ジャンプ後urlの試み関数は実行されません。このようにして、戻ってきたページのレンダリングは成功しませんでした。redirectは指定ページにジャンプし、ログインが成功すると、urlルートシステムでマッチングし、存在するマッピング関数があれば、対応するマッピング関数を実行します。
補足知識:Djangoの中間部品とクラスビュー
クラスビュー
関数ビュー:関数で定義されたビューを関数ビューと呼びます。
クラスビュー:クラスで定義されたビューをクラスビューと呼びます。
コードの可読性が良い
クラスビューは関数ビューに対してより高い多重性を持っています。
したがって、ほとんどのビューはクラスを使用して実装されます。
from django.views import View
class ClassView(View):
""" """
def get(self, request):
"""get """
print('get ')
return HttpResponse('get ')
def post(self, request):
"""post """
print('post ')
return HttpResponse('post ')
"""
url
"""
urlpatterns = [
url(r"^classview/$", views.ClassView.as_view())
#ClassView Django as_view view
]
中間部品中間部品
Djangoのミドルウェアはライト級、最下層のプラグインシステムであり、Djangoの要求と応答処理過程に介入し、Djangoの入力または出力を修正することができる。中間部品の設計は開発者に無侵入型の開発方式を提供し、Djangoフレームのたくましさを強化しました。
中間部品を使用してDjango処理ビューの異なる段階で入力または出力に干渉することができます。
# ( ).py
#
def outer(fuc):
print(' ')
def inner(*args, **kwargs):
print(' ')
data = fuc(*args, **kwargs)
print(' ')
return data
return inner
#2. settings.py middleware
'user1.middlewares.outer' #
以上のdjango装飾器は登録状態を検出して操作します。小編集は皆さんに全部の内容を共有しています。参考にしてもらいたいです。よろしくお願いします。