Вопрос

I have an app called transactions. Within this app I have a model called BatchFile. In my views.py file, I subclass ListView (amongst others). The default behavior is that django thinks batchfile_list.html should be located at:

templates/transactions/batchfile_list.html

That's great, but the folder is getting crowded. I'm able to add "templates/transactions/batchfiles" to TEMPLATE_DIRS, but because the default behavior is to look for appname/modelname_type.html that requires that I put my templates in:

templates/transactions/batchfiles/transactions/batchfile_list.html

when I'd really like it to be in:

templates/transactions/batchfiles/batchfile_list.html

or my optimal result:

templates/transactions/batchfiles/list.html  

Are there configuration options that would allow me to do this? I know the optimal result is probably not cleanly achieved, but I was hoping for at least the slightly less optimal result.

Thanks!

Это было полезно?

Решение

The easiest way is to specify template_name:

class MyListView(ListView):
    template_name = "transactions/batchfiles/list.html"

An alternative is to override get_template_names:

class MyListView(ListView):

    def get_template_names(self):
        return ["transactions/batchfiles/list.html"]

Note that it needs to return a list of possible template locations.

In this case there would only be one which is the desired location.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top