我正在为朋友zumba类开发一个小型注册应用程序,使用Flask,SQLAlchemy和Flask-migrate(alembic)来处理db update.我决定使用SQlite,因为应用程序必须是自包含的并且在没有Internet访问的笔记本电脑上本地运行,并且SQLite不需要安装服务或其他服务,这也是必须的.
处理SQLite缺乏对ALTER表的支持在初始开发期间不是问题,因为我只是销毁,在出现问题时重新创建数据库.但是现在我的朋友实际上正在使用该应用程序我遇到了问题.
在功能请求之后,必须修改一个表,并再一次得到可怕的""不支持SQLite方言中约束的ALTER".我预见这个问题将来也可能出现.
我该如何处理这个问题?在处理数据库方面,我几乎是一个新手.我读到一种处理方法是创建一个新表,创建新约束并复制数据并重命名表,但我不知道如何在alembic脚本中实现它.
我为朋友构建了一个小型网络应用程序。使用该应用程序时,该朋友的计算机将无法连接到 Internet,因此无法将其部署在 Heroku 上。
有没有办法在本地部署它而不必安装复杂的 Web 服务器?可以与应用程序一起打包的小东西?当您进入“生产”时,似乎不鼓励使用内置 Flask 服务器,但是对于本地应用程序是否可以?
我已经注册了一些模型以显示在管理区域中,但我希望隐藏一些字段.
举个例子,我有一个带有名为"Status"的BooleanField的TeachingClasses模型,根据类是否打开,该模型设置为True或False.但这是在应用程序的其他地方设置的.当有人想要创建要参加的新课程时,无需在管理区域中显示该字段.
因此,有没有办法在管理区域中隐藏该字段?
我已经尝试将此添加到应用程序admin.py文件,但它什么也没做
from django.contrib import admin
class MyModelAdmin(admin.ModelAdmin):
class TeachingClasses:
exclude = ('Status',)
Run Code Online (Sandbox Code Playgroud)
但它不起作用?
如果这是正确的方法,任何线索?
我的模特:
class TeachingClasses(models.Model):
name = models.Charfield('Class Name',max_lenght=64)
[...]
status = models.BooleanField('Status',default=True)
Run Code Online (Sandbox Code Playgroud) 在我的 Flask Web 应用程序中,有一条路线显示所有名字以“A、B、C 等”开头的成员,或者显示所有注册成员的“显示全部”按钮。目前用户总数约为 750 名。问题是显示“显示全部”列表需要 10 多秒。对数据库本身的请求很快,渲染花费了所有这些秒。我想知道是否有办法加快速度?我对 python、flask 和 jinja2 还很陌生,所以我还不知道优化路径。
这是views.py,当我单击网页上的“显示全部”按钮时,它会调用字母参数设置为“0”的url:
@main.route('/all-members')
@login_required
@admin_required
def all_members():
alphabet = list(string.ascii_lowercase)
first_letter = request.args.get('letter')
if first_letter == '0':
user_ = User.query.order_by(User.fullname.asc()).all()
else:
user_ = User.query.filter(User.username.startswith(first_letter)).order_by(User.fullname.asc()).all()
return render_template('all_members.html', all_members = user_, alphabet = alphabet)
Run Code Online (Sandbox Code Playgroud)
它返回 750 个用户对象。然后我将该结果传递给模板:
return render_template('all_members.html', all_members = user_, alphabet = alphabet)
Run Code Online (Sandbox Code Playgroud)
和模板:
{% extends "base.html" %}
{% block title %}Zata - members list{% endblock %}
{% block page_content %}
<div class="page-header" xmlns="http://www.w3.org/1999/html">
<h1>Tribe members list</h1>
<p></p> …Run Code Online (Sandbox Code Playgroud) 我在我的项目中使用flask-bootstrap,唯一的怪癖是每条闪现消息都显示在自己的块中,因此当页面显示3条消息时,它们会很快“堆积”。并且始终为橙色,无论我给它们什么类别。有没有办法覆盖该行为并将闪存消息组合在使用正确类别颜色的单个块中?
我遇到了一个奇怪的问题.我从数据库加载所有用户名,然后我用任何东西替换在用户名中找到的任何空格,所以它被删除.但它不起作用,空间停留在那里!这是我的代码
users = User.query.all()
for u in users:
username = u.username
print (username)
new_username = username.replace(" ","")
print (new_username)
Run Code Online (Sandbox Code Playgroud)
作为例子,第一个打印返回:"MavNandi 7",第二个返回相同的"MavNandi 7"
空间停留在那里.我很困惑.任何线索?
flask ×3
python ×2
alembic ×1
django ×1
django-admin ×1
jinja2 ×1
python-3.x ×1
sqlalchemy ×1
sqlite ×1