Flask-SQLAlchemy и Flask-WTF не работают в Ubuntu и Fedora - PullRequest
0 голосов
/ 02 ноября 2019

Это фрагмент кода страницы, предназначенный для сервера Ubuntu. На сайте есть простая форма входа в систему Flask-WTF и простая база данных в SQLAlchemy.

Когда я ввожу команду from app import db для входа в учетные записибазу данных или когда я ввожу python run.py для запуска страницы, я получаю следующую ошибку:

Traceback (most recent call last):
  File "run.py", line 1, in <module>
    from app import app
  File "/var/www/html/app/__init__.py", line 17, in <module>
    from .models import Admin
  File "/var/www/html/app/models.py", line 18
    return f"Admin('{self.name}','{self.surname}')"

после удаления:

    def __repr__(self):
        return f"Admin('{self.name}','{self.surname}')"

из файла models.py и после вводакоманда снова python run.py Я получаю следующую ошибку:

Traceback (most recent call last):
  File "run.py", line 1, in <module>
    from app import app
  File "/var/www/html/app/__init__.py", line 33, in <module>
    from app.views import app
  File "/var/www/html/app/views.py", line 25
SyntaxError: Non-ASCII character '\xc5' in file /var/www/html/app/views.py on line 25, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

Эти ошибки перестали появляться, когда я удалил формы Flask-WTF и удаляю весь код SQLAlchemy.

Программа отображаетте же ошибки в Ubuntu и Fedora, но в Windows 10 работают без проблем.

Подводя итог, флеш-wtf и sqlalchemy по какой-то причине не работают в ubuntu и fedora, и я не знаю, какИсправить это . Все работает на Windows 10

Установленные пакеты и программы

  1. python 2.7.8 / 3.4.1
  2. FLask 1.1.1
  3. Flask-WTF 0.14.2
  4. WTForms 2.2.1
  5. Flask-SQLAlchemy 2.4.1
  6. SQLAlchemy 0.9.10

__ init __. py


from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_wtf.csrf import CSRFProtect
import os

app = Flask(__name__)

file_path = os.path.abspath(os.getcwd())+"\database.db"
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///'+file_path
app.config["SQLALCHEMY_ECHO"] = False
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
app.config["SECRET_KEY"] = "secret"

db = SQLAlchemy(app)
from .models import Admin
db.init_app(app)

csrf = CSRFProtect(app)
csrf.init_app(app)

with app.app_context():
    db.create_all()

from app.views import app

forms.py


from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField, BooleanField, TextAreaField, FileField, IntegerField, validators
from wtforms.validators import DataRequired, Email, EqualTo, Length, InputRequired, NumberRange

class Login_Admin(FlaskForm):

    username = StringField('Nzwa użytkownika <strong class="obligation">*</strong>', [validators.InputRequired(message="Pole jest wymagane"), validators.Length(min=4, max=128, message="Za krótki login!")])

    password = PasswordField('Hasło <strong class="obligation">*</strong>', [validators.InputRequired(message="Pole jest wymagane"), validators.Length(min=6, max=128, message="Musi być minimalnie 4 znaków!")])

    pin = IntegerField('PIN <strong class="obligation">*</strong>', [validators.InputRequired(message="Pole jest wymagane")])

    submit = SubmitField('Zaloguj')

models.py


from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import Table, Column, Integer, ForeignKey
from sqlalchemy.orm import relationship
from . import db


class Admin (db.Model):
    __tablename__ = 'admin'
    idAdmin = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(255))
    password = db.Column(db.String(255))
    pin = db.Column(db.Integer)
    name = db.Column(db.String(255))
    surname = db.Column(db.String(255))

    def __repr__(self):
        return f"Admin('{self.name}','{self.surname}')"


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