Pythonself.request.获取全部不返回所选值

2024-09-30 02:23:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从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代码是

^{pr2}$

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

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处理程序

主处理程序类

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]还是{}哪个元素。所以我不能尝试 acadYear=self.request.get_all('acadYear')[0].encode('UTF-8')。在

这么简单的事情-但是-为什么要这么复杂!在

感谢任何帮助。我在孩子面前丢脸。在


Tags: nameselfdivformurlgetvaluerequest

热门问题