gpt4 book ai didi

python - GAE Python self.request.get_all 不返回所选值

转载 作者:行者123 更新时间:2023-12-01 02:52:41 25 4
gpt4 key购买 nike

我正在尝试从 SELECT 标记中获取值。

我的 HTML 是

<div class="form-group">
<label for="acadYear">Academic Year:</label>
<select id="acadYear" name"acadYear">
<option value="2017-18">This Academic Year</option>
<option value="2018-19">Next Academic Year</option>
</select>
</div>

我获取这个值的Python代码是

acadYear=self.request.get('acadYear')

这不会返回任何内容。当我尝试时

acadYear=self.request.get_all('acadYear')

抛出错误

BadValueError: Expected string, got []

发生什么事了?有什么线索吗?

更多详细信息

实体

from google.appengine.ext import ndb

class Allocation(ndb.Model):
acadYear = ndb.StringProperty()
branch = ndb.StringProperty()
semester = ndb.StringProperty()
subjectCode = ndb.StringProperty()
subjectName = ndb.StringProperty()
facultyId = ndb.StringProperty()
facultyName = ndb.StringProperty()
choiceNumber = ndb.StringProperty()
status = ndb.StringProperty()
createdOn = ndb.DateTimeProperty(auto_now_add=True)

@classmethod
def faculty_query(cls, parent_key):
return cls.query(ancestor=parent_key).order(-cls.createdOn)

接收数据的 HTML 代码

    <form action="" method="post">
<legend>Mention Your New Preferences Here</legend>
<div class="form-group">
<label for="acadYear">Academic Year:</label>
<select id="acadYear" name="acadYear">
<option value="2017-18">This Academic Year</option>
<option value="2018-19">Next Academic Year</option>
</select>
</div>
<div class="form-group">
<label for="branch">Branch:</label>
<input type="text" id="branch" name"branch" value="CSE or ISE or MCA">
</div>
<div class="form-group">
<label for="semester">Semester:</label>
<input type="text" id="semester" name="semester" value="From 1 to 8"/>
</div>
<div class="form-group">
<label for="choiceNumber">Choice#:</label>
<input type="text" id="choiceNumber" name="choiceNumber" value="1,2,3"/>
</div>
<div class="form-group">
<label for="subjectCode">Subject Code:</label>
<input type="text" id="subjectCode" name="subjectCode" value="Example: 10CS43"/>
</div>
<div class="form-group">
<label for="subjectName">Subject Name:</label>
<input type="text" id="subjectName" name="subjectName" value="Example: Design and Analysis of Algorithms"/>
</div>
<div class="form-group">
<button type="submit">Save Preference</button>
</div>
</form>

Python 处理程序

MainHandler类

class MainHandler(webapp2.RequestHandler):
def _render_template(self, template_name, context=None):
if context is None:
context = {}
# Get the logged in user
user = users.get_current_user()
ancestor_key = ndb.Key("User", user.nickname())
qry = Allocation.faculty_query(ancestor_key)
context['allocs'] = qry.fetch()

template = jinja_env.get_template(template_name)
return template.render(context)

@ndb.transactional
def _create_alloc(self, user):
alloc = Allocation(parent=ndb.Key("User", user.nickname()),
acadYear=self.request.get_all('acadYear'),
branch=self.request.get('branch'),
semester=self.request.get('semester'),
subjectCode=self.request.get('subjectCode'),
subjectName=self.request.get('subjectName'),
facultyId=user.user_id(),
facultyName=user.nickname(),
choiceNumber=self.request.get('choiceNumber'),
status='Requested')
alloc.put()

def get(self):
user = users.get_current_user()
if user is not None:
logout_url = users.create_logout_url(self.request.uri)
template_context = {
'user': user.nickname(),
'logout_url': logout_url,
}
self.response.out.write(
self._render_template('main.html', template_context))
else:
login_url = users.create_login_url(self.request.uri)
self.redirect(login_url)

def post(self):
user = users.get_current_user()
if user is None:
self.error(401)

self._create_alloc(user)

logout_url = users.create_logout_url(self.request.uri)
template_context = {
'user': user.nickname(),
'logout_url': logout_url,
}
self.response.out.write(
self._render_template('main.html', template_context))

acadYear=self.request.get_all('acadYear') 返回一个 list - 显然是 Unicode - 需要变成 string 用于放入到数据存储中。

我尝试过以下方法

(1) 使用中间变量 = 不起作用。(2) 编码为 UTF-8 - 不能,因为 list 没有 encode 方法。(3) 我不知道会选择 [0][1] 中的哪个元素。因此我无法尝试acadYear=self.request.get_all('acadYear')[0].encode('UTF-8')

如此简单的事情 - 但是 - 为什么它必须如此复杂!

感谢任何帮助。我在 children 面前丢脸了。

最佳答案

您在这行中有一个拼写错误:

<select id="acadYear" name"acadYear">

您需要在“名称”后面添加“=”。由于此拼写错误,您的浏览器不会发送选择字段的数据。

关于python - GAE Python self.request.get_all 不返回所选值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44566178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com