Bagaimana saya bisa melihat pola url saat ini yang melihat "terbalik"?
Saya menelepon terbalik dalam pandangan dengan argumen yang menurut saya harus berhasil, tetapi tidak. Dengan cara apa pun saya dapat memeriksa apa yang ada di sana dan mengapa pola saya tidak?
django
django-urls
django-views
interstar
sumber
sumber
Jawaban:
Jika Anda menginginkan daftar semua url dalam proyek Anda, pertama-tama Anda perlu menginstal django-extensions , tambahkan ke pengaturan Anda seperti ini:
Dan kemudian, jalankan perintah ini di terminal Anda
Untuk informasi lebih lanjut, Anda dapat memeriksa dokumentasi.
sumber
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
django_extensions
untuk AndaINSTALLED_APPS
menginstal setelahCoba ini:
Atau jika Anda masih di Django 1. *:
sumber
set(v[1] for k,v in get_resolver(None).reverse_dict.items())
django.core.urlresolvers
telah dihapus di Django 2.0 , ganti baris impor denganfrom django.urls import get_resolver
Django> = 2.0 solusi
Saya menguji jawaban lain dalam posting ini dan mereka tidak bekerja dengan Django 2.X, tidak lengkap atau terlalu rumit. Karena itu, inilah pendapat saya tentang ini:
Kode ini mencetak semua URL, tidak seperti beberapa solusi lain, kode ini akan mencetak jalur lengkap dan tidak hanya node terakhir. misalnya:
sumber
yield acc + [str(l.pattern)]
baris keyield acc + [str(l.pattern)], l.callback
. Perlu diingat bahwa ini akan mengembalikan fungsi tampilan itu sendiri dan bukan namaDjango 1.11, Python 2.7.6
Kemudian tempel kode berikut.
Output sampel:
sumber
None
ke barisurls = urlresolvers.get_resolver(None)
, dan terkadang saya mendapatkan 'Tidak Ada' di awal beberapa URL.Ada resep di activestate
sumber
show_urls(urls.url_patterns)
.ModuleNotFoundError: No module named 'urls'
, tidak tahu mengapa?test.py
di root proyek saya dan mengalami kesalahan ini, juga jika saya lakukanimport urls
di interpreter maka saya juga mendapatkan kesalahan ini.import urls
ini adalah impor lokal, jadi Anda mungkin perlu melakukannyafrom app_name import urls
.Saya menggunakan perintah selanjutnya:
(Python3 + Django 1.10)
Pemakaian:
Output sampel:
sumber
print
. Sebagai gantinya gunakanself.stdout.write
. docs.djangoproject.com/en/1.10/howto/custom-management-commandsAda plugin yang saya gunakan: https://github.com/django-extensions/django-extensions , ia memiliki perintah show_urls yang dapat membantu.
sumber
Dalam python manage.py shell
sumber
Di Django 3.0, semudah:
Cetakan:
[<URLPattern '' [name='home']>, <URLPattern '/testing' [name='another_url']>]
sumber
Saya telah memperpanjang perintah Seti untuk menampilkan namespace, semua bagian url, lebar kolom penyesuaian otomatis, diurutkan berdasarkan (namespace, nama): https://gist.github.com/andreif/263a3fa6e7c425297ffee09c25f66b20
Pembaruan: Versi baru dengan OrderedDict sekarang ada di paket django-🍌s: https://github.com/5monkeys/django-bananas/blob/master/bananas/management/commands/show_urls.py
sumber
Cukup ketik url yang Anda tahu tidak ada dan server akan mengembalikan pesan kesalahan dengan daftar pola url.
Misalnya, jika Anda menjalankan situs di http: // localhost: 8000 / sesuatu
Ketik
http: // localhost: 8000 / sesuatu / blahNonsense , dan server Anda akan mengembalikan daftar pencarian url dan menampilkannya di browser
sumber
Solusi minimalis untuk django 2.0
Misalnya, jika Anda mencari url yang ada di aplikasi pertama dari instal_apps, Anda dapat mengaksesnya seperti itu:
sumber
get_resolver
daridjango.core.urlresolvers
. Terima kasih Marcio!Django 1.8, Python 2.7+ Jalankan saja perintah ini di Shell Anda. Python manage.py shell dan jalankan kode berikut.
sumber
Anda dapat membuat impor dinamis untuk mengumpulkan semua Pola URL dari setiap aplikasi dalam proyek Anda dengan metode sederhana seperti:
list_of_all_url_patterns = get_url_patterns()
Saya baru-baru ini menggunakan sesuatu seperti ini untuk membuat tag template untuk menampilkan link navigasi yang aktif.
sumber
Berikut
your_main_app
adalah nama aplikasi tempat file settings.py Anda ditempatkansumber