URL budova s ​​baňky a non-jedinečné názvy popisovač

hlasů
17

Baňka poskytuje url_forfunkce pro generování URL do manipulátory na základě vzoru adresy URL. Ale to by znamenalo, že handler funkce musí mít jedinečné názvy v rámci celé aplikace. Je to správně?

Příklad

Modul A má popisovač index:

@app.route('/')
def index(): pass

A modul B má další handler index:

@app.route('/anotherindex')
def index(): pass

Jak rozlišit manipulátory zvané indexpři vytváření adres URL?

url_for('index')
Položena 05/08/2011 v 14:51
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
48

Nevím, jak byste mohli udělat se všemi pohledy směrovány do stejného modulu.

To, co jsem obvykle udělat, je oddělit své názory v různých modulech (jako jste to udělali s modulem Aa B) a registrovat je jako plány, po které při použití url_for()funkce můžete předponu názvu pohledu se svým jménem modrotisku a vyhnout se konfliktům a potenciál problémy.

Zde je příklad:

main_views.py:

from flask import Blueprint
main = Blueprint('main', __name__)

@main.route('/')
def index():
    pass

admin_views.py:

from flask import Blueprint
admin = Blueprint('admin', __name__)

@admin.route('/admin')
def index():
    pass

application.py:

from flask import Flask
from main_views import main
from admin_views import admin

app = Flask('my_application')
app.register_blueprint(main)
app.register_blueprint(admin)

Nyní přejděte na 2 zobrazení indexu a ještě rozlišit jedno od druhého, stačí použít url_for('main.index')nebourl_for('admin.index')

UPRAVIT:

Ještě jeden užitečné informace o směrování pomocí plánů, při registraci plán, můžete předat url_prefixargument, který bude platit pro každého pohledu v rámci tohoto plánu.

Například vzhledem k tomu následující kód:

admin_views.py

from flask import Blueprint
admin = Blueprint('admin', __name__)

@admin.route('/')
def index():
    pass

@admin.route('/logout')
def logout():
    pass

application.py:

from flask import Flask
from admin_views import admin

app = Flask('my_application')
app.register_blueprint(admin, url_prefix='/admin')

Na 2 views bude k dispozici na URL /admin/a/admin/logout

Odpovězeno 05/08/2011 v 16:09
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more