Ошибки редактирования профиля. Если вы, ребята, сможете обнаружить дополнительные ошибки, это было бы супер круто

#python #flask #web #profile

Вопрос:

Я пытаюсь захватить и отобразить изображение и сохранить его на сервере mongodb, чтобы его можно было снова вызвать для самого профиля. У меня ошибка с именем файла. Любая помощь будет очень признательна:

 @application.route("/profileEdit", methods = ["POST", "GET"]) def profileEdit():  if request.method == "POST":   username = request.form['username']  password = request.form['password']  email = request.form['email']  labor = request.form['image']  phone = request.form['phone']     if 'file' not in request.files:  flash('No file part')  return redirect(request.url)   file = request.files['file']   if file.filename == '':  flash('No image selected for uploading')  return redirect(request.url)  if file and allowed_file(file.filename):  filename = secure_filename(file.filename)  file.save(os.path.join('/static/Images', filename))  #print('upload_image filename: '   filename)  usersDB = client["userRegistration"]  users = usersDB['userregistrations']   #existing_user = users.find_one({'name': request.form['username']}) #update to session  #if existing_user is None:  #return redirect(url_for('registration'))   #else:   #hashpass = bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt())  #users.updateOne({'date': str(date.today()),'name': username, 'password':hashpass, 'email': email, 'phonenumber': phone, 'labor':labor, 'profilePic': profilePic})  #session['username'] = request.form['username']  #return redirect(url_for('profile'))   else:  flash('Allowed image types are - png, jpg, jpeg, gif')  return redirect(request.url)        return render_template("profileEdit.html", filename = filename)#, image_file = image_file)  @app.route('/display/lt;filenamegt;') def display_image(filename):  #print('display_image filename: '   filename)  return redirect(url_for('static', filename='/static/Images'   filename), code=301)  

и для html у меня есть это:

 lt;Form method = "POST"gt;  {% if filename %}  lt;divgt;  lt;img src ="{{ url_for('display_image', filename=filename) }}"gt;  lt;/divgt;  {% endif %}    lt;dlgt;  lt;pgt;  lt;input type="file" name="file" class="form-control" autocomplete="off" requiredgt;  lt;/pgt;  lt;/dlgt;     lt;pgt;  {% with messages = get_flashed_messages() %}  {% if messages %}  lt;ulgt;  {% for message in messages %}  lt;ligt;{{ message }}lt;/ligt;  {% endfor %}  lt;/ulgt;  {% endif %}  {% endwith %}  lt;/pgt;  

вот новая ошибка ( я забыл ее перезагрузить):

 * Running on http://hidden/ (Press CTRL C to quit) hidden - - [14/Nov/2021 18:39:13] "GET /profileEdit HTTP/1.1" 500 - Traceback (most recent call last):  File "C:UserstquigOneDriveDocumentsGitHubFS-CSCI150-F21-Team4envLibsite-packagesflaskapp.py", line 2091, in __call__  return self.wsgi_app(environ, start_response)  File "C:UserstquigOneDriveDocumentsGitHubFS-CSCI150-F21-Team4envLibsite-packagesflaskapp.py", line 2076, in wsgi_app  response = self.handle_exception(e)  File "C:UserstquigOneDriveDocumentsGitHubFS-CSCI150-F21-Team4envLibsite-packagesflaskapp.py", line 2073, in wsgi_app  response = self.full_dispatch_request()  File "C:UserstquigOneDriveDocumentsGitHubFS-CSCI150-F21-Team4envLibsite-packagesflaskapp.py", line 1518, in full_dispatch_request  rv = self.handle_user_exception(e)  File "C:UserstquigOneDriveDocumentsGitHubFS-CSCI150-F21-Team4envLibsite-packagesflaskapp.py", line 1516, in full_dispatch_request  rv = self.dispatch_request()  File "C:UserstquigOneDriveDocumentsGitHubFS-CSCI150-F21-Team4envLibsite-packagesflaskapp.py", line 1502, in dispatch_request  return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)  File "C:UserstquigOneDriveDocumentsGitHubFS-CSCI150-F21-Team4application.py", line 158, in profileEdit  return render_template("profileEdit.html", filename = filename)#, image_file = image_file) UnboundLocalError: local variable 'filename' referenced before assignment  

Спасибо вам, ребята из stack overflow, вы, ребята, потрясающие!

Комментарии:

1. Переменная filename будет установлена только в том случае, если request.method == 'POST' и file истинно и allowed_file истинно, но все остальные ваши случаи все равно подпадают под это return утверждение.

2. Итак, вы говорите, что это не устанавливается, потому что у меня есть барьеры до того, как это будет установлено?

3. Я поместил строку установки переменной под набором переменных файла. Это исправило эту проблему, но она больше не отображает html и css.

4. вы могли бы установить filename = None в начале profileEdit() , чтобы эта переменная была всегда.