Apakah mungkin untuk secara langsung mendeklarasikan parameter opsional URL flask?
Saat ini saya sedang melanjutkan cara berikut:
@user.route('/<userId>')
@user.route('/<userId>/<username>')
def show(userId, username=None):
pass
Bagaimana saya bisa langsung mengatakan bahwa username
itu opsional?
Hampir sama dengan Audrius yang dibuat beberapa bulan yang lalu, tetapi Anda mungkin menemukan itu sedikit lebih mudah dibaca dengan default di kepala fungsi - cara Anda terbiasa dengan python:
sumber
username
tidak konstan.defaults=
membekukan nilai default di kamus.Jika Anda menggunakan Flask-Restful seperti saya, juga dimungkinkan dengan cara ini:
a kemudian di kelas Sumber Daya Anda:
sumber
https://flask.palletsprojects.com/en/1.1.x/quickstart/#unique-urls-redirection-behavior
sumber
http://flask.pocoo.org/snippets/57/
sumber
sumber
Hampir sama dengan skornos, tetapi dengan deklarasi variabel untuk jawaban yang lebih eksplisit. Ini dapat bekerja dengan ekstensi Flask-RESTful :
The
add_resource
Metode memungkinkan kelipatan lulus URL. Masing-masing akan diarahkan ke Sumber Daya Anda .sumber
Saya tahu posting ini benar-benar tua tetapi saya mengerjakan sebuah paket yang melakukan ini disebut flask_optional_routes. Kode ini terletak di: https://github.com/sudouser2010/flask_optional_routes .
sumber
Anda dapat menulis seperti yang Anda tunjukkan dalam contoh, tetapi Anda tidak mendapatkan build-error.
Untuk memperbaiki ini:
<Rule '/<userId>/<username>' (HEAD, POST, OPTIONS, GET) -> user.show_0>
dan
<Rule '/<userId>' (HEAD, POST, OPTIONS, GET) -> .show_1>
{{ url_for('.show_0', args) }}
dan{{ url_for('.show_1', args) }}
sumber
Karena Flask 0.10 Anda tidak dapat menambahkan beberapa rute ke satu titik akhir. Tetapi Anda dapat menambahkan titik akhir palsu
sumber
Saya pikir Anda dapat menggunakan Blueprint dan itu akan membuat kode Anda terlihat lebih baik dan rapi.
contoh:
sumber