Django - 'data' не является зарегистрированным пространством имен - PullRequest
1 голос
/ 04 июня 2019

Я практикую данные CRUDS и сталкиваюсь с некоторой ошибкой, когда пытаюсь закодировать функцию удаления.

в timesheet.html:

 {% for data in TR %}
                    <tr>
                        <th>{{data.month}}</th>
                        <th>{{data.worktime}}</th>
                        <th>{{data.email}}</th>
                        <th></th>
                        <th><a href="{% url 'data:delete' data.0 %}"><button type="button">刪除</button></a></th>
                    </tr>
                    {% endfor %}

в views.py:

def delete(request, id):
        with connection.cursor() as cursor:
                sqldelete = """
                        delete from timesheet where idtimesheet = %s
                """
                cursor.execute(sqldelete, (id,))
        return redirect("/timesheet")

в urls.py

  urlpatterns = [
    path('', views.timesheet, name='timesheet'),
    # path('index/', views.index, name='index')
    path('data_db/', views.data_db, name='data_db'),

    path('delete/<int:idtimesheet>', views.delete, name="delete")
]

1 Ответ

0 голосов
/ 04 июня 2019

Проблема здесь: url 'data:delete'

Проблема в том, что Django не распознает эти первые «данные» - это имя вашего приложения или пространство имен, определенное в URL вашего уровня проекта.py, когда вы include() приложение urls.py?

если ваш urls.py, который вы цитировали, включен в файл более высокого уровня urls.py, вы должны иметь возможность указать его пространство имен, включив в него кортеж, определяющий местонахождение модуля, содержащего список url_patterns, и пространство именстрока.Моя полная запись из руководства по опросам:

re_path(r'^polls/', include(('polls.urls', 'polls'))),

Если у вас нет пространства имен, тогда вам не нужно data:, просто сделайте его url delete

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...