クライアントとサーバの間に2つの最も一般的な方法を要求します。
1. GET要求は、一般的にサーバーにデータを取得するために使用されますが、サーバーにデータを送信しません、サーバーのステータスが変更されません。
2.POST要求は通常、サーバにデータを送信するために使用され、サーバーのステータスが変更されます。
規制要求デコレータ:
Djangoはビルトインビューデコレータを視野だけのようなGETメソッドやアクセスなど正面図などいくつかの制限を、提供することができます。一般的に組み込みビューデコレータを使用しました。
1. django.http.decorators.http.require_http_methods:合格するこのデコレータ必要メソッドのリストにアクセスすることができます。
クライアントは、GETリクエストを送信した場合、(1)例えば、それは、物品を追加するためにユーザインタフェースに戻り、POST要求が送信される場合、データベースに送信するデータが格納されます。views.pyファイル、次のサンプルコード:
from django.views.decorators.http import require_http_methods
from django.http import HttpResponse
from django.shortcuts import render
from .models import Article
@require_http_methods(['GET', 'POST'])
def index2(request):
<!--首先判断客户端发送的是哪种请求GET OR POST-->
<!--注意这里一定要是“==” 只有“==”才会返回True or False-->
if request.method == 'GET':
return render(request,'static/add.html')
else:
title = request.POST.get('title')
content = request.POST.get('content')
price = request.POST.get('price')
Article.objects.create(title=title, content=content, price=price)
articles = Article.objects.all()
return render(request, 'static/index.html', context={'articles': articles}
次のように(2)のindex.htmlサンプルコードです。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<table>
<thead>
<tr style="width: 20px">标题</tr>
<tr style="width: 20px">内容</tr>
<tr style="width: 20px">价格</tr>
<tr style="width: 20px">创建时间</tr>
</thead>
<tbody>
{% for article in articles %}
<tr>
<td><a href="#">{{ article.title }}</a></td>
<td><a href="">{{ article.content }}</a></td>
<td><a href="">{{ article.price }}</a></td>
<td>{{ article.create_time }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</body>
</html>
(3)urls.pyファイル、次のサンプルコード:
from django.urls import path
from article import views
urlpatterns = [
path('', views.index, name='index'),
path('add/', views.add, name='add'),
path('add2/', views.index2, name='add2'),
]
127.0.0.1:ポストマンソフトウェアでは、POSTリクエストの入力されたURLを使用して3000 / ADD2 /(ここで私は、ポート番号は3000です修正デフォルト8000)のパラメータのタイトル、およびボディを必要としている以下のURLで渡さ。、内容、価格はこの結果を返します。
ポストマンソフトウェアGETリクエストのアクセスURLを使用して:127.0.0.1:3000 / ADD2 /、このページの記事に戻りますが、ポストマン、入力されたデータでも、フォーム上の送信ボタンをクリックした後、任意の反応を持っていない、それがすることができますブラウザは、GETリクエストへのアクセスを使用しています。送信ボタンをクリックして、データベース内の新しく追加された記事情報を見ることができます。
2. django.views.decorators.http.require_GET:デコレータ等価require_http_methods([「GET」]は)のみビューへのアクセスを許可速記方法GETです。
(1)例えば、私たちは次のようにGETリクエストがサンプルコードでホーム・ページ、views.pyファイルを訪問することができます:
from django.views.decorators.http import require_GET
@require_GET
def index(request):
articles = Article.objects.all()
return render(request, 'static/index.html', context={'articles':articles})
(2)サンプルコードは、index.htmlを次の
<ul>
{% for article in articles %}
<li>{{% article.title %}}</li>
<li>{{% article.content %}}</li>
<li>{{% article.price %}}</li>
{% endfor %}
</ul>
3. django.views.decorators.http.require_POST:デコレータ等価require_http_methods([「POSTは」])速記方法POST要求が専用ビュー、次のサンプルコードにアクセスすることを許可されています。
from django.views.decorators.http import require_POST
@require_POST
def add(request):
title = request.POST.get('title')
content = request.POST.get('content')
Article.objects.create(title=title, content=content)
return HttpResponse('success')
4. django.views.decorators.http.require_safe:短い形式でデコレータ等価require_http_methods([「GET」、「HEAD」])、ビューにアクセスするための比較的安全な方法の使用のみ、なぜならGETとHEADありませんそれはリクエストの比較的安全な方法であるように、サーバーは、CRUDの動作を生成します。