Python 使用Django webframework for MySQL从请求对象获取数据

Python 使用Django webframework for MySQL从请求对象获取数据,python,html,mysql,django,Python,Html,Mysql,Django,各位专家好,, 我是django新手,正在尝试学习如何为MySQL数据库构建django web框架。我可以发布我的查询(搜索词)并获得所需的结果。但我正在尝试修改我的项目,以便用户可以在提交页面中提交查询,并在执行时在URL中查看他们的查询参数。 大概是这样的: 提交页面: 执行后页面将如下所示: 但现在我还是不知道在花了几天的时间后如何正确地做这件事 forms.py from django import forms from models import Query class SQLFo

各位专家好,, 我是django新手,正在尝试学习如何为MySQL数据库构建django web框架。我可以发布我的查询(搜索词)并获得所需的结果。但我正在尝试修改我的项目,以便用户可以在提交页面中提交查询,并在执行时在URL中查看他们的查询参数。 大概是这样的: 提交页面: 执行后页面将如下所示:

但现在我还是不知道在花了几天的时间后如何正确地做这件事

forms.py

from django import forms
from models import Query

class SQLForm(forms.ModelForm):
    xtrackid=forms.CharField(max_length=100)
    def checkxID(self):
        xtrackid=self.cleaned_data.get("xtrackid")
        return xtrackid

class QueryForm(forms.ModelForm):
    class Meta:
        model=Query
        fields=["xtrackid"]
views.py

from django.shortcuts import render
from django.http import HttpResponse
from forms import SQLForm, QueryForm
import sys

def search_form(request):
    return render(request, 'index.html')

def search(request):
    form = QueryForm(request.POST or None)
    if form.is_valid():
        instance = form.save(commit=False)
        xtrackid = form.cleaned_data.get("xtrackid")
        xtrackid =xtrackid.strip()
        conn = MySQLdb.connect (host = "localhost", user = "root", passwd = "XXXX", db = "XXXtracker")
        cursor = conn.cursor ()
        cursor.execute ("SELECT xInfo.xtideID, xIDunID.AccessionNumber FROM xInfo, xIDunID WHERE xInfo.xtideID = xIDunID.xtideID AND xIDunID.xtideID LIKE '%" + xtrackid +"%'")
        row = cursor.fetchone ()
        listrow= list(row)
        contextres={}
        if cursor.rowcount==0:
            contexterror = {
            'outputerror': xtrackid
            }
            return render(request, 'errorform.html', contexterror)
        else:
            if contextres.has_key(str(listrow[0])):
                contextres[str(listrow[0])].append(listrow[1])
            else:
                contextres[str(listrow[0])]= [listrow[1]]
            resulstdict = {'contextresultinfo': contextres}
            return render(request, 'resultform.html', {'xinfo': resulstdict, 'query': xtrackid})
        conn.close()

    else:
        return HttpResponse('Please submit a valid search term.')
url.py

from django.conf.urls import include, url
from django.contrib import admin
from myapp import views

urlpatterns = [
        url(r'^admin/', include(admin.site.urls)),
        url(r'^xtrack/$', views.search_form),
        url(r'^resultform/$', views.search),
        url(r'^errorform/$', views.search)
]

我的模板如下所示: index.html

<html>
<h1> Welcome to xTrack </h1>
<head>
    <title>Search</title>
</head>
<body>
    <form action="/xtrack/" method="get">
        <input type="text" name="xtrackid">
        <input type="submit" value="Search">
    </form>
</body>
</html>

欢迎来到xTrack
搜寻
resultform.html

结果

{%if contextresultinfo%}
xtide跟踪器ID
登录号
{键为%,contextresultinfo.items%中的值为} {值%%中的项目的百分比} {{key}} {%用于项%%中的数据} {{data}} {%endfor%} {%endfor%} {%endfor%} {%else%} 没有与您的搜索条件匹配的xtrack

{%endif%}
你能告诉我在我的项目中我需要在哪里修改代码吗。
谢谢

在您的视图中,您可以通过以下方式获得提交数据:

form = QueryForm(request.POST or None)
但在html文件中,您将表单方法定义为:

<form action="/peptrack/" method="get">


因此,
request.POST
将无法获取任何数据。

为什么不在views.py-search中使用Djangos ORM?我不知道ORM,但我会在阅读了一些教程后尝试实现它。这是我的另一个问题,那么我将如何使用get…。如果我不使用POST,那么我无法验证我的表单…那么我如何才能得到我想要的结果?也许你可以尝试一下这:
<form action="/peptrack/" method="get">