Django 正在url中获取csrfmiddleware令牌

Django 正在url中获取csrfmiddleware令牌,django,django-csrf,Django,Django Csrf,在像这样提交表单之后,我在url中获得了csrf令牌 发出GET查看请求后,url将在url中显示csrf令牌 /views.py def search(request): if(request.method=='GET'): form=searchform(request.GET) if(form.is_valid()): id=request.GET['symbol'] data=company.obj

在像这样提交表单之后,我在url中获得了csrf令牌

发出GET查看请求后,url将在url中显示csrf令牌

/views.py

def search(request):
    if(request.method=='GET'):
        form=searchform(request.GET)
        if(form.is_valid()):
            id=request.GET['symbol']
            data=company.objects.filter(Symbol=id)
            form=searchform()
            return render(request, 'list-company.html',{"data":data,"form":form})
/url.py

from django.contrib import admin
from django.urls import path
from csv2db.views import Company,search
urlpatterns = [
    path('admin/', admin.site.urls),
    path('company/',Company,name='company-details'),
    path('detail/',search,name='search')

]
HTML文件中的表单

{% block content %}
        <form method="get" action="{% url 'search'  %}">
            {% csrf_token %}
            {{ form.as_ul}}
            <button type="Submit">Submit</button>
        </form>
{%block content%}
{%csrf_令牌%}
{{form.as_ul}}
提交

您正在HTML文件中添加
csrf\u标记
模板标记,表单方法设置为
get
。所以数据被附加为查询参数,包括csrf令牌


因此,您可以将其更改为
post
方法,或删除
csrf\u标记
模板标记。

但是,如果我想保留它“GET”,因为我使用此表单获取数据集,该怎么办?well GET方法将始终附加输入类型,因此您对此无能为力,否则,您需要在视图中使用csrf_豁免,并从表单中删除csrf_令牌
{% block content %}
        <form method="POST" action="{% url 'search'  %}">
            {% csrf_token %}
            {{ form.as_ul}}
            <button type="Submit">Submit</button>
        </form>
def search(request):
    form=searchform()
    if(request.method=='POST'):
        form=searchform(request.POST)
        if(form.is_valid()):
            id=request.GET['symbol']
            data=company.objects.filter(Symbol=id)
            form=searchform()
            return render(request, 'list-company.html',{"data":data,"form":form})
    return render(request, 'list-company.html',{"form":form})