>

그래서 POST 요청을 처리하기 위해 Flask에서 경로에 대한 함수를 만들고 있지만 Flask가 어떤 이유로 내 요청 변수를 인식하지 못합니다. 이 파이썬 코드가 있습니다 :

@app.route("/decide", methods=["GET", "POST"])
def decide():
    if request.method == "POST":
        # Ensure user has permission to modify this request
        request_id = request.form.get("job_id")
        if not request_id:
            return redirect("/")
        request = Requests.query.get(request_id)
        if not request:
            return redirect("/")
        job = Jobs.query.get(request.job_id)
        if not job:
            return redirect("/")
        job_creator = job.creator_id
        if job_creator != session["user_id"]:
            return redirect("/")
        if request.form.get("submit") == "accept":
            print("accept")
        if request.form.get("submit") == "reject":
            print("reject")
     return redirect("/")

이 HTML 코드로

:     {%는 "dad.html"%}을 확장합니다

{% if job.creator_id == session.user_id %}
{% block head %}
<title>{{job.title}}</title>
{% endblock %}
{% block body %}
<h1>{{job.title}}</h1>
<br />
<br />
{% if total > 0 %}
    <h3>There {% if total != 1%}are{% else %}is{% endif %} {{total}} request{% if total != 1%}s{% endif %} for this job</h3>
{% else  %}
    <h3>There are no requests for this job currently</h3>
{% endif %}
<br />
{% for requ in requests %}
    <form method="POST" id="form" action="/decide">
    <div class="row">
        <input type="hidden" value="{{requ.id}}" name="job_id" />
        <div class="col-md-3">
            <h3><a href="/profiles/{{requ.requester_username}}">{{requ.requester_fname}} {{requ.requester_lname}}</a></h3>
        </div>
        <div class="col-md-1">
            <button type="submit" name="submit" value="accept" id="accept" class="btn btn-success">Accept</button>
        </div>
        <div class="col-md-1">
            <button type="submit" name="ding" value="reject" class="btn btn-danger">Reject</button>
        </div>
    </div>
    </form>
    <br />
    <br />
{% endfor %}
{% endblock %}
{% endif %}

그런 다음 오류가 발생합니다 :

UnboundLocalError: local variable 'request' referenced before assignment

라인에서 :

if request.method == "POST":

이 작품과 같은 다른 모든 루트는 어떤 이유로 든 "요청"을 인식하지 못합니다. 또한 플라스크에서 요청 객체를 가져 왔으므로 문제가되지 않습니다. 도움을 주셔서 감사합니다.


  • 답변 # 1

    실제로 코드의 문제점은 파이썬이 요청과 혼동된다는 것입니다.

    <올>

    플라스크에는 request라는 모듈이 있습니다

    요청이라는 변수를 선언하고 있습니다

    요청 = Requests.query.get (request_id)

    여기에서 사용하기

    job = Jobs.query.get(request.job_id)
    
    

    내가 선언 한 변수 또는 플라스크 요청 모듈을 사용하라는 요청이 파이썬에 혼란스러워지고 있습니다.

    변수 이름을 다른 것으로 간단히 변경

  • 답변 # 2

    request 를 재정의하기 때문에 발생했을 가능성이 높습니다  나중에 코드 블록에서 변수를 변경하십시오.

    request = Requests.query.get(request_id)
    
    

    네임 스페이스와 충돌하지 않도록 변수 이름을 다른 것으로 바꾸십시오.

  • 이전 이 sql이 수행하는 작업 - sum (of a_c2_1-a_c2_24)
  • 다음 C ++ 클래스의 생성자