簡體   English   中英

賦值前引用的 UnboundLocalError 局部變量 'context' Django

[英]UnboundLocalError local variable 'context' referenced before assignment Django

在根 urls.py 中添加新根 url 后,我立即收到以下錯誤。

當我刪除儀表板視圖 url 並嘗試加載索引視圖時,它會成功呈現。 我做錯了什么或者我能做些什么來解決這個問題。

錯誤信息

UnboundLocalError at /blogapp/
local variable 'context' referenced before assignment
Request Method: GET
Request URL:    http://127.0.0.1:8000/blogapp/
Django Version: 4.0.2
Exception Type: UnboundLocalError
Exception Value:    
local variable 'context' referenced before assignment

我的看法

from multiprocessing import context
import re
from django.shortcuts import render
from django.http import HttpResponse
from .odd_finder_func import *


def index(request):
    if request.method == 'POST':
        odd1 = float(request.POST.get('odd1'))
        odd2 = float(request.POST.get('odd2'))
        odd3 = float(request.POST.get('odd3'))

        func_def = odd_finder_true(odd1, odd2, odd3)

        context = {
            'Juice': func_def['Juice'],
            'TotalImpliedProbability': func_def['TotalImpliedProbability'],
            'HomeOdd': func_def['HomeOdd'],
            'DrawOdd': func_def['DrawOdd'],
            'AwayOdd': func_def['AwayOdd'],
            'Home_True_Odd': func_def['Home_True_Odd'],
            'Draw_True_Odd': func_def['Draw_True_Odd'],
            'Away_True_Odd': func_def['Away_True_Odd'],
            'True_Probability': func_def['True_Probability']
            }

        context = context

    return render(request, 'index.html', context)

def dashboard(request):
    return render(request, 'dashboard.html')

博客應用程序 urls.py

from django.urls import path
from .views import *
from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

myblog urls.py 根文件。

from django.contrib import admin
from django.urls import path, include
from blogapp import views

urlpatterns = [ 
    path('admin/', admin.site.urls),
    path('', views.dashboard, name='dashboard'),
    path('blogapp/', include('blogapp.urls')),
]

index.html

<!doctype html>
<html lang="en">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- Bootstrap CSS -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">

    <title>Hello, world!</title>
  </head>
  <body>
    <h1>Hello, world!</h1>

    <div class="container">
        <!-- Content here -->

        
    <form action="" method="post">
        {% csrf_token %}
        <div class="mb-3">
            <label for="Odd1" class="form-label">Home Odd</label>
            <input type="number" class="form-control" name="odd1" id="odd1" min="0" value=" " step=".01" required='required'>
          </div>
        <div class="mb-3">
          <label for="Odd2" class="form-label">Draw Odd</label>
          <input type="number" class="form-control" name="odd2" id="odd2" min="0" value=" " step=".01" required='required'>
        </div>

        <div class="mb-3">
            <label for="Odd3" class="form-label">Away Odd</label>
            <input type="number" class="form-control" name="odd3" id="odd3" min="0" value=" " step=".01" required='required'>
          </div>
       
        <button type="submit" class="btn btn-primary">Submit</button>
        <input class="btn btn-primary" type="reset" value="Reset">
      </form>

      </div>
       

      <div class="container">
        <p>Total Implied probability percentage: {{TotalImpliedProbability}}</p>
        <p>Bookie juice is: {{Juice}}</p>
        <p>Home Odd: {{HomeOdd}}</p>
        <p>Draw Odd: {{DrawOdd}}</p>
        <p>Away Odd: {{AwayOdd}}</p>
        <p>Home True Odd: {{Home_True_Odd}}</p>
        <p>Draw True Odd: {{Draw_True_Odd}}</p>
        <p>Away True Odd: {{Away_True_Odd}}</p>
        <p>True Probability is: {{True_Probability}}</p>
       
      </div>

      



    <!-- Optional JavaScript; choose one of the two! -->

    <!-- Option 1: Bootstrap Bundle with Popper -->
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>


    
    <!-- Option 2: Separate Popper and Bootstrap JS -->
    <!--
    <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js" integrity="sha384-IQsoLXl5PILFhosVNubq5LC7Qb9DXgDA9i+tQ8Zj3iwWAwPtgFTxbJ8NT4GN1R8p" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.min.js" integrity="sha384-cVKIPhGWiC2Al4u+LWgxfKTRIcfu0JTxR+EQDz/bgldoEyl4H0zUF0QKbrJ0EcQF" crossorigin="anonymous"></script>
    -->
  </body>
</html>

下面是django app文件設置的附件。

在此處輸入圖像描述

你需要在if request.method == "GET"時定義上下文

def index(request):
    if request.method == "POST":
        odd1 = float(request.POST.get("odd1"))
        odd2 = float(request.POST.get("odd2"))
        odd3 = float(request.POST.get("odd3"))

        func_def = odd_finder_true(odd1, odd2, odd3)

        context = {
            "Juice": func_def["Juice"],
            "TotalImpliedProbability": func_def["TotalImpliedProbability"],
            "HomeOdd": func_def["HomeOdd"],
            "DrawOdd": func_def["DrawOdd"],
            "AwayOdd": func_def["AwayOdd"],
            "Home_True_Odd": func_def["Home_True_Odd"],
            "Draw_True_Odd": func_def["Draw_True_Odd"],
            "Away_True_Odd": func_def["Away_True_Odd"],
            "True_Probability": func_def["True_Probability"],
        }

        context = context

        # INDENT THIS
        return render(request, "index.html", context)
    else:
        # WHAT IS THE CONTEXT WHEN request.method == "GET" ?
        return render(request, "index.html", {})

問題是您創建的變量context與您從文件頂部的 multiprocessing 導入的context同名。 更改變量名稱應該可以解決問題。

from multiprocessing import context
import re
from django.shortcuts import render
from django.http import HttpResponse
from .odd_finder_func import *


def index(request):
    if request.method == 'POST':
        odd1 = float(request.POST.get('odd1'))
        odd2 = float(request.POST.get('odd2'))
        odd3 = float(request.POST.get('odd3'))

        func_def = odd_finder_true(odd1, odd2, odd3)

        response_context = {
            'Juice': func_def['Juice'],
            'TotalImpliedProbability': func_def['TotalImpliedProbability'],
            'HomeOdd': func_def['HomeOdd'],
            'DrawOdd': func_def['DrawOdd'],
            'AwayOdd': func_def['AwayOdd'],
            'Home_True_Odd': func_def['Home_True_Odd'],
            'Draw_True_Odd': func_def['Draw_True_Odd'],
            'Away_True_Odd': func_def['Away_True_Odd'],
            'True_Probability': func_def['True_Probability']
            }

    return render(request, 'index.html', response_context)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM