当前位置: 首页 > 知识库问答 >
问题:

使用MySQL的Django web框架从请求对象获取数据

楚嘉
2023-03-14

你好,专家,我是django的新手,我想学习如何为MySQL数据库构建django web框架。我可以发布我的查询(搜索词)并获得所需的结果。但是我试图修改我的项目,以便用户可以在提交页面提交查询,并在执行时在URL中查看他们的查询参数。类似这样:提交页面:http://localhost:8000/和执行后页面将是这样的:http://localhost:8000/xtrack/?searchid=XXXX

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

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.')

urls.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>

resultform.html

{% if contextresultinfo %}
    <table border="1" style="width:100%">
        <tr>
            <td>xtide tracker ID<br> </td>
            <td>Accession number<br></td>
        </tr>
        {% for key, values in contextresultinfo.items %}
        <tr>
           {% for items in values %}
           <tr>
              <td>{{key}}</td>
              {% for data in items %}
                    <td>{{data}}</td>
              {% endfor %}
           </tr>
           {% endfor %}
        </tr>
        {% endfor %}
    </table>
{% else %}
    <p>No xtrack matched your search criteria.</p>
{% endif %}
</body>

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

共有1个答案

戎高爽
2023-03-14

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

form = QueryForm(request.POST or None)

但在html文件中,您将表单方法定义为:

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

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

 类似资料:
  • 如何从HttpSessionAttributeListener获取请求对象以查找用户的IP地址? 谢谢

  • 问题内容: 尝试将文件上传到服务器,但ImmutableMultiDict对象返回空。 upload.html 烧瓶 这是日志数据 问题答案: 您的版本太旧,无法引起此情况。 当我使用 2.1.1时 ,代码运行正常。 顺便说一句,您不需要。

  • 我和Gremlin.Net一起工作

  • 问题内容: 我现在正在尝试使用Java Cord中的HTTP请求获取JSON对象。 我想知道如何在下面的代码中获取响应或JSON对象。 请告诉我。 (在此程序中,我尝试获取文章“ New York”的Wikipedia类别。) 问题答案:

  • 问题内容: 我正在使用express + node.js,并且我有一个req对象,浏览器中的请求是/ account,但是当我登录req.path时,我得到的是’/’ —不是’/ account’。 req.path是/何时应该是/ account? 问题答案: 在自己玩了一点之后,您应该使用:

  • 我正在使用快速节点。js和我有一个req对象,浏览器中的请求是/account,但当我记录req时。我得到的路径是“/”--不是“/account”。 req.path/什么时候应该 /account??