django тег URL с динамикой c app_label - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь создать динамический c тег URL для моего списка на основе класса. это необходимо для кнопки удаления на каждом элементе списка, который он зацикливает. проблема в том, что я использую этот шаблон в нескольких приложениях и хочу использовать его повторно. что в настоящее время работает: [filename.html]

{% for file in object_list %}
      <tr>
        <td>{{file.stream}} </td>
        <td>{{file.regExpFilename}}</td>
        <form class="delete-form" method="POST" action="{% url 'MyApp1:filenames_delete' pk=file.stream %}">
            <button type="submit" value="delete" class="btn-delete"
              onclick="return confirm('Are you sure to delete {{file.stream}} {{file.regExpFile}}?')">
              Delete
            </button>

core.urls.py

"Filename":[
            path('filenames/', views.FilenameView.as_view(), name='filenames'),
            path('filenames/create', views.FilenameCreateView.as_view(), name='filenames_create'),
            path('filenames/delete/<pk>', views.FilenameDeleteView.as_view(), name='filenames_delete'),

core.views.filenames.py

class FilenameView(generic.ListView):

    def get_context_data(self, **kwargs) -> dict:
        model_name = self.model._meta.model_name
        context = super().get_context_data(**kwargs)
        app_label = self.model._meta.app_label
        context["create_url"] = reverse("{}:filenames_create".format(app_label))
        return context

Но я хочу удалить «MyApp», чтобы его можно было повторно использовать для нескольких приложений.

Большое спасибо,

1 Ответ

0 голосов
/ 17 февраля 2020

Вы можете создать пользовательский шаблонный процессор :

def apps_context_processor(request):
    return {
        'item_delete_url': reverse(f'{request.resolver_match.app_name}:filenames_delete')
    }

И затем использовать это в своем шаблоне url тег.

...