django
  • python-2.7
  • 2017-03-16 93 views 0 likes 
    0

    我刚刚学了烧瓶之后,我在学习django。我有一个项目,我必须在烧瓶中做,现在在django有相同的项目。我尽管用相同的代码去“转换”过来。它在/ farm处抛出一个错误KeyError。如果有人能告诉我在上班途中KeyError at/farm django python

    每个请求的错误是在代码

    if request.POST["building"] == "farm": 
        request.session['farmprint']+= 'Earned' +str(request.session['farm']) + 'golds from the farm!' 
    
    if request.POST["building"] == "cave": 
        request.session['farmprint']+= "Earned" +str(request.session['cave']) + 'golds from the cave!' 
    
    if request.POST["building"] == "house": 
        sessrequest.sessionion['farmprint']+= "Earned" +str(request.session['house']) + 'golds from the house' 
    
    if request.POST["building"] == "casino": 
        if request.session['casino'] > 0: 
         request.session['farmprint']+= "Earned" +str(request.session['casino']) + 'golds from the casino' 
    if request.POST["building"] == "casino": 
        if request.session['casino'] < 0: 
         request.session['farmprint']+= "Earned" +str(request.session['casino']) + 'golds from the casino' 
    
        return render(request.session, 'ninjagold/index.html') 
    
    else: 
        return render(request.session, 'ninjagold/index.html') 
    

    完全踪迹,这部分回如下

    Traceback: 
    
    File "C:\Users\dbhol\Desktop\DojoAssignments\Python\myenvirnoments\djangoENv\lib\site-packages\django\core\handlers\exception.py" in inner 
        42.    response = get_response(request) 
    
    File "C:\Users\dbhol\Desktop\DojoAssignments\Python\myenvirnoments\djangoENv\lib\site-packages\django\core\handlers\base.py" in _get_response 
        187.     response = self.process_exception_by_middleware(e, request) 
    
    File "C:\Users\dbhol\Desktop\DojoAssignments\Python\myenvirnoments\djangoENv\lib\site-packages\django\core\handlers\base.py" in _get_response 
        185.     response = wrapped_callback(request, *callback_args, **callback_kwargs) 
    
    File "C:\Users\dbhol\Desktop\DojoAssignments\Python\myenvirnoments\project7\ningagold\apps\ninjagold\views.py" in building 
        48.  print request.session['farmprint'] 
    
    File "C:\Users\dbhol\Desktop\DojoAssignments\Python\myenvirnoments\djangoENv\lib\site-packages\django\contrib\sessions\backends\base.py" in __getitem__ 
        57.   return self._session[key] 
    
    Exception Type: KeyError at /farm 
    Exception Value: 'farmprint' 
    HTML 
    
    <!DOCTYPE html> 
    <html> 
    <head> 
        <title></title> 
        <meta charset="utf-8"> 
        <script type="text/javascript" src='http://code.jquery.com/jquery-1.10.2.min.js'></script> 
        <script> 
        </script> 
    
    </head> 
    <body> 
    <div><P>Farm</P><form action="/farm" method="post"> 
        {% csrf_token %} 
        <input type="hidden" name="building" value="farm" /> 
        <input type="submit" value="Find Gold!"/> 
    </form> </div> 
    <div><p>Cave</p><form action="/farm" method="post"> 
        {% csrf_token %} 
        <input type="hidden" name="building" value="cave" /> 
        <input type="submit" value="Find Gold!"/> 
    </form> </div> 
    <div><p>House</p><form action="/farm" method="post"> 
        {% csrf_token %} 
        <input type="hidden" name="building" value="house" /> 
        <input type="submit" value="Find Gold!"/> 
    </form> </div> 
    <div><p>Casino</p><form action="/farm" method="post"> 
        {% csrf_token %} 
        <input type="hidden" name="building" value="casino" /> 
        <input type="submit" value="Find Gold!"/> 
    </form> </div> 
    <div><p> 
    </p></div> 
    </form> 
    </body> 
    </html> 
    views.py 
    
    from django.shortcuts import render, redirect, HttpResponse 
    import random 
    import string 
    
    def index(request): 
        return render(request, 'ninjagold/index.html') 
    
    def building(request): 
        if request.method == ['POST']: 
         try: 
          request.session['farmprint'] += "" 
         except Exception: 
          request.session['farmprint'] = "" 
         try: 
          request.session['caveprint'] += "" 
         except Exception: 
          request.session['caveprint'] = "" 
         try: 
          request.session['houseprint'] += "" 
         except Exception: 
          request.session['houseprint'] = "" 
         try: 
          request.session['casinoprint'] += "" 
         except Exception: 
          request.session['casinoprint'] = "" 
        request.session['farm'] = 0 
        request.session['cave'] = 0 
        request.session['house'] = 0 
        request.session['casino'] = 0 
        if 'gold' not in request.session: 
         request.session['gold'] = 0 
        if request.POST["building"] == "farm": 
         request.session['farm'] = random.randint(10, 20) 
         print request.session['farm'] 
        elif request.POST["building"] == "cave": 
         request.session['cave'] = random.randint(5, 10) 
         print request.session['cave'] 
        elif request.POST["building"] == "house": 
         request.session['house'] = random.randint(2, 5) 
         print request.session['house'] 
        elif request.POST["building"] == "casino": 
         request.session['casino'] = random.randint(-50, 50) 
         print request.session['casino'] 
        if request.POST["building"] == "farm": 
         request.session['farmprint'] += 'Earned' +str(request.session['farm']) + 'golds from the farm!\n' 
    
        if request.POST["building"] == "cave": 
         request.session['farmprint'] += "Earned" +str(request.session['cave']) + 'golds from the cave!\n'  
        if request.POST["building"] == "house": 
         sessrequest.sessionion['farmprint'] += "Earned" +str(request.session['house']) + 'golds from the house\n' 
        if request.POST["building"] == "casino": 
         if request.session['casino'] > 0: 
          request.session['farmprint'] += "Earned" +str(request.session['casino']) + 'golds from the casino\n'  
        if request.POST["building"] == "casino": 
         if request.session['casino'] < 0: 
          request.session['farmprint'] += "Earned" +str(request.session['casino']) + 'golds from the casino\n'  
         return render(request.session, 'ninjagold/index.html') 
        else: 
         return render(request.session, 'ninjagold/index.html') 
    urls.py 
    
    from django.conf.urls import url 
    from . import views 
    from django.template import RequestContext 
    
    urlpatterns = [ 
        url(r'^$', views.index), 
        url(r'^farm$', views.building) 
    ] 
    
    +0

    最初在哪里设置request.session ['farmprint']'? –

    +0

    不需要在烧瓶中放置其他地方。我应该把它设置为0吗?开始? –

    +0

    在哪里打印request.session ['farmprint']'? –

    回答

    0

    看来,无论是:

    1. 你有一个print声明(print request.session['farmprint'])的request.session['farmprint']在什么地方实际上是充满价值或

    2. 你有这个print声明(print request.session['farmprint']),并永远不会执行的值填充request.session['farmprint']的代码。顺便说一下,你永远不会初始化request.session['farmprint']。只有当请求方法是POST时才可以。

    0

    我遇到的问题的答案是我有一个[POST]错误,而不是'POST',因为我删除了它的工作。

    +0

    去大卫的路。恭喜。将您的答案标记为已接受且快乐的编码! –

    相关问题