Это фрагмент кода страницы, предназначенный для сервера 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
Установленные пакеты и программы
- python 2.7.8 / 3.4.1
- FLask 1.1.1
- Flask-WTF 0.14.2
- WTForms 2.2.1
- Flask-SQLAlchemy 2.4.1
- 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}')"