Rumah  >  Soal Jawab  >  teks badan

python - django request请求问题求助

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网站 出现了



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

membalas semua(4)saya akan balas

  • 巴扎黑

    巴扎黑2017-04-18 09:20:22

    Dalam Django, ralat berikut mungkin berlaku apabila menggunakan siaran:

    Forbidden(403):
    CSRF verification failed. Request aborted.
    Reason given for failure:
        CSRF token missing or incorrect.

    Ini kerana Django membantu kami mengaktifkan perlindungan terhadap serangan CSRF CSRF (pemalsuan permintaan merentas tapak) ialah permintaan merentas tapak berniat jahat atau serangan yang menyamarkan pengguna pelayan penyemakan imbas pengguna untuk mengakses tapak web yang disahkan dan melakukan beberapa operasi berniat jahat. Memandangkan penyemak imbas pengguna telah disahkan oleh tapak web, tapak web akan membenarkan operasi ini dilakukan dengan yakin (walaupun operasi ini tidak diperlukan oleh tapak web atau bukan secara sukarela oleh pengguna).

    Jadi pelayan kami memerlukan beberapa langkah perlindungan. Kaedah perlindungan biasa ialah menggunakan token rawak yang dijana oleh pelayan dan memasukkannya ke dalam borang yang dihantar kepada klien Apabila klien menghantar semula borang, pelayan menyemak sama ada token itu dikeluarkan dengan sendirinya, dengan itu menghalang serangan.

    Memandangkan terdapat settings.py lalai dalam MIDDLEWARE_CLASSES dalam fail 'django.middleware.csrf.CsrfViewMiddleware', Django akan memerlukan pengesahan token CSRF di sini Untuk menjadikan tapak web kami lebih selamat, kami masih mengikut peraturan permainan langkah demi langkah Ayuh!

    Tambah <form> pada {% csrf_token %} dalam html seperti berikut:

    ...
             <form action="" method="post"> {% csrf_token %}
    ...

    Ini akan menyelesaikan masalah


    Soalan yang saya jawab: Python-QA

    balas
    0
  • 高洛峰

    高洛峰2017-04-18 09:20:22

    在form中添加{{ csrf_token }}后再试试,form如下:
    <form action="{% url 'home_page_show' %}" method="POST">
        {% csrf_token %}
        <input type="text" name="username">
        <button id="btn">提交</button>
    </form>

    balas
    0
  • 天蓬老师

    天蓬老师2017-04-18 09:20:22

    <button id="btn">Serah</button> ditulis sebagai <input type="submit" value="submit">, sudah tentu {% csrf_token %} tidak boleh hilang

    balas
    0
  • ringa_lee

    ringa_lee2017-04-18 09:20:22

    Terdapat cara yang lebih mudah untuk mengulas konfigurasi csrf dalam fail tetapan. .

    balas
    0
  • Batalbalas