python - django request请求问题求助
大家讲道理
大家讲道理 2017-04-18 09:18:22
0
4
708

urls.py

from django.conf.urls import url
from django.contrib import admin
from blog import views
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', views.index),
    url(r'^abc$',views.handler),
]



views.py
# -*- coding: utf-8 -*-
from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.

def index(request):
    return render(request,"index.html")


def handler(request):
    return HttpResponse("<p>name:</p>" + request.POST['username'])



index.html
<!doctype html>
<html>
    <head>
        <meta charset="UTF-8"/>
        <title>index page</title>
    </head>
    <body>
       <form action="abc" method="POST">
               <input type="text" name="username">
               <button id="btn">提交</button>
       </form>
    </body>
</html>


我在谷歌浏览器下点击这个提交后出现了

我又直接打开abc网站 出现了



请问这是什么问题啊 要怎么解决啊 ?
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

모든 응답(4)
巴扎黑

Django에서는 post를 사용할 때 다음과 같은 오류가 발생할 가능성이 높습니다.

으아악

Django가 CSRF 공격에 대한 보호를 활성화하도록 도와주기 때문입니다. CSRF(교차 사이트 요청 위조)는 악의적인 교차 사이트 요청 또는 공격자가 사용자를 속이는 공격입니다. 사용자의 브라우징 서버가 인증된 웹사이트에 접속하여 악의적인 작업을 수행합니다. 사용자의 브라우저는 웹 사이트에서 인증되었으므로 웹 사이트에서는 이러한 작업을 안전하게 수행할 수 있습니다(해당 작업이 웹 사이트에서 요구되지 않거나 사용자가 자발적으로 수행하지 않는 경우에도 마찬가지).

그래서 우리 서버에는 몇 가지 보호 조치가 필요합니다. 일반적인 보호 방법은 서버에서 생성된 임의의 토큰을 사용하여 클라이언트로 보내는 양식에 이를 포함시키는 것입니다. 클라이언트가 양식을 다시 보내면 서버는 해당 토큰이 자체적으로 발급되었는지 확인하여 공격을 방지합니다.

settings.py 파일의 MIDDLEWARE_CLASSES에 기본 'django.middleware.csrf.CsrfViewMiddleware'이 있으므로 Django는 웹사이트를 더욱 안전하게 만들기 위해 여기에서 CSRF 토큰 확인을 요구합니다. 어서!

html의 <form>에 다음과 같이 {% csrf_token %}을 추가합니다.

으아악

이렇게 하면 문제가 해결됩니다


내가 답변한 질문: Python-QA

小葫芦

으아악

Peter_Zhu

<button id="btn">Submit</button>은 <input type="submit" value="submit">로 작성됩니다. 물론 {% csrf_token %}이 누락될 수 없습니다

左手右手慢动作

설정 파일에서 csrf 구성을 주석 처리하는 더 간단한 방법이 있습니다. .

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿