2016-04-11 39 views
3

Özel bir projeden yeniden kullanılabilir bir uygulama oluşturmak istiyorum.Yeniden Kullanılabilir İç Şablon Django Uygulaması

Ben yeniden kullanılabilir bir uygulamaya taşımak istediğiniz bölümü tüm sayfaları hizmet veren ve üst bu kullanır:

{% extends "myproject/base.html" %}

Şimdi kullanmak ne taban şablonu emin değilim. Yeni yeniden kullanılabilir uygulamada, bu paylaşamayacağım özel kod olduğundan myproject kullanmak istemiyorum.

ben büyük bir django dokümanlar yardım almak çalıştı, ancak bir çözüm bulamadık - Kör :-)

yeniden kullanılabilir bir app burada yazmaya ne

olsaydı beni affedin?

{% extends ??????? %}

cevap

3

veya uygulama klasörü içinde bu şablonları saklamak gerekir.

myproject/myreusableapp gibi bir yapıya sahip olduğunuzu varsayarsanız myreusableapp klasöründe bir şablon klasörü oluşturur ve orada base.html dosyanızı saklayabilirsiniz.

Ardından {% extends "myreusableapp/base.html" %}

+0

myreusableapp'ın pip kurulabilir bir python paketi olmasını istediğimden, 'myproject/myreusableapp' dizin yapısına sahip değilim. Ancak '{% genişletilmiş" myreusableapp/base.html "%}" iyi görünüyor. ...... Fakat bekle. "Myreusableapp/base.html" nasıl görünüyor? İçerilen projenin üstbilgisini + altbilgisini almak için bir çeşit "genişlet" kullanmalıyım. – guettli

+0

django-allauth, ilgili şablonları içeren bir paketin mükemmel bir örneğidir.Belki de "allauth/templates" dizininin içinde gerçek bir örnek almak için bu koda bir göz atın. https://github.com/pennersr/django-allauth – awwester

+0

Bağlantı için teşekkür ederiz. Desen şu şekildedir: "myreusableapp/base.html" bir satır içerir: "{% extends" base.html "%}'. Bkz. Https://github.com/pennersr/django-allauth/blob/master/allauth/templates/account/base.html – guettli

2

Maalesef burada resmi bir kongre sunmuyor django bu dosyayı uzanacak.

yeniden kullanılabilir şablonlar için bu kuralları tanımlayan bir üçüncü şahıs belgeleri proje yok:

https://django-reusable-app-docs.readthedocs.org/en/latest/apps/templates.html

konu 2012 yılından bu yana resmi django docs bir kongre açıktır almak için:

https://code.djangoproject.com/ticket/19106

Yukarıdaki iki kopya olarak kapatılmış biletim:

https://code.djangoproject.com/ticket/26501

... Umarım gelecekte bir anlaşma bulunur.

0

ben bu şekilde yapın:

main standart operasyonlar için bir uygulama (çağrı cihazı, giriş, ...) ve onun içinde baz şablonlar ve statik vardır
\project 
| 
+-\main 
| | 
| +-\template 
| | | 
| | +-\mainapp 
| | | 
| | +-base.html 
| | +-index.html 
| | +-... 
| | 
| +-\static 
| | 
| +-css 
| +-js 
| +-pics 
| +-... 
| 
+-\otherapp 
    | 
    +-... 

. Şablonların main/templates/main/'da saklandığını unutmayın.

settings.py numaralı projede, STATICFILES_DIRS numaralı telefona main/static'u kaydetmeyi unutmayın.

{% extends 'main/base.html' %} kullanarak dağıtabilirsiniz.

+0

Bunu şu şekilde anlıyorum: "main2" adlı farklı bir projede "otherapp" öğesini yeniden kullanırsanız, "main2" temel şablonunu "main/base.html" olarak verir. Tamam, bu yaklaşık bir çözüm tarafından sağlanan çözüm ile aynı gibi görünüyor. Bir şey kaçırırsam lütfen beni düzeltin. – guettli