홈>
그래서 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
- 답변 # 2
request
를 재정의하기 때문에 발생했을 가능성이 높습니다 나중에 코드 블록에서 변수를 변경하십시오.request = Requests.query.get(request_id)
네임 스페이스와 충돌하지 않도록 변수 이름을 다른 것으로 바꾸십시오.
관련 자료
- Laravel 5의 정의되지 않은 변수 요청
- 요청 받기를위한 Python 변수?
- python - 컨텍스트 외부에서 플라스크 변수 사용
- python - 플라스크에서 자바 스크립트로 변수 호출 및 for 루프 사용
- python - 플라스크 경로 기능 이외의 변수 값을 어떻게 변경할 수 있습니까?
- python - Flask에서 리디렉션 할 때 요청 후 값 변경
- amazon ec2 - Nginx 리디렉션 요청 기반 경로 변수
- mysql - 알 수없는 시스템 변수 - "newid"가 인식되지 않습니다
- javascript - fetch를 사용하여 GET 요청에 변수를 보내는 방법은 무엇입니까?
- excel - 변수가 범위를 벗어 났거나 인식되지 못했습니다
- python - 플라스크를 사용하여 자바 스크립트에서 변수를 얻는 방법
관련 질문
- python : 일대다 관계 flask-sqlalchemy를 식별하는 적절한 방법입니까?
- javascript : Flask는 페이지를 새로 고칠 때 게시 요청 상태를 제거합니다.
- python : Cloud Run Flask 애플리케이션의 비디오 업로드는 해당 파일 또는 디렉토리를 제공하지 않습니다.
- python : 반환 후/반환과 함께 code를 실행하기 위해 스레드를 사용하는 플라스크
- python : 플라스크 앱을 실행할 때 상위 폴더에서 모듈 가져오기가 작동하지 않음
- python : 플라스크를 사용하여 heroku bert pytorch 모델에 배포: 오류: _pickle.UnpicklingError: 잘못된 로드 키, 'v'
- python : 'function' 개체에는 JSON에 'load' 속성이 없습니다.
- python : 일대다 관계 플라스크
- python : Flask babel 인라인 변수
- Google Cloud Run에서 스레딩을 사용하는 Python Flask 앱의 일관되지 않은 성능
실제로 코드의 문제점은 파이썬이 요청과 혼동된다는 것입니다.
<올>플라스크에는 request라는 모듈이 있습니다
요청이라는 변수를 선언하고 있습니다
요청 = Requests.query.get (request_id)
여기에서 사용하기
내가 선언 한 변수 또는 플라스크 요청 모듈을 사용하라는 요청이 파이썬에 혼란스러워지고 있습니다.
변수 이름을 다른 것으로 간단히 변경