Переменная запроса колбы не распознана - PullRequest
0 голосов
/ 08 июня 2018

Итак, я создаю функцию для маршрута в Flask для обработки запроса POST, но Flask по какой-то причине не распознает мою переменную запроса.У меня есть этот код Python:

@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-кодом: {% extends "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":

Все другие мои маршруты, подобные этой работе, просто не распознают здесь «запрос» по любой причине.Я также импортировал объект запроса из колбы, так что это не проблема.Спасибо за любую помощь, которую вы можете оказать!

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

На самом деле проблема с кодом заключается в том, что python запутывается с запросом

  1. у флакона есть модуль с именем request
  2. вы объявляете переменную с именем request

    request = Requests.query.get (request_id)

и его использование здесь

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

python запутывается, какой запрос использовать переменнуюВы объявили или модуль запроса колбы.

просто измените имя переменной на что-то другое

0 голосов
/ 08 июня 2018

Скорее всего, это происходит из-за того, что вы позже переопределяете переменную request в блоке кода.

request = Requests.query.get(request_id)

Попробуйте изменить имя этой переменной на другое, чтобы у вас не было конфликта пространства имен,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...