Мой веб-сайт хорошо работает в моей локальной среде, а также хорошо работал в среде heroku до моего недавнего развертывания. Код одинаков в обеих средах, и я сослался на все 11 постов, связанных с похожей проблемой, пример Обратное для 'todo-user' с аргументами '(' ',)' не найдено. 1 шаблон (ов) пробовал
Моя проблема выглядит иначе, чем я видел в других постах здесь, я думаю, что она связана с настройками / переменными среды, которые я пока не могу определить. Но решения, предоставляемые при переполнении стека, заставляют меня думать, что настоящая проблема этой проблемы - что-то еще.
Когда я пытаюсь нажать на ссылку http://127.0.0.1:8000/catalog/mybooks/, локальный веб-сайт работает нормально, однако, производство(heroku), тот же код выдает следующее исключение
NoReverseMatch at /catalog/mybooks/
Reverse for 'book-detail' with arguments '('',)' not found. 1 pattern(s) tried: ['catalog/book/(?P<pk>[0-9]+)$']
Request Method: GET
Request URL: https://<myapp>.herokuapp.com/catalog/mybooks/
Django Version: 2.2.5
Exception Type: NoReverseMatch
Exception Value:
Reverse for 'book-detail' with arguments '('',)' not found. 1 pattern(s) tried: ['catalog/book/(?P<pk>[0-9]+)$']
Exception Location: /app/.heroku/python/lib/python3.7/site-packages/django/urls/resolvers.py in _reverse_with_prefix, line 673
Python Executable: /app/.heroku/python/bin/python
Python Version: 3.7.3
Python Path:
['/app/.heroku/python/bin',
'/app',
'/app/.heroku/python/lib/python37.zip',
'/app/.heroku/python/lib/python3.7',
'/app/.heroku/python/lib/python3.7/lib-dynload',
'/app/.heroku/python/lib/python3.7/site-packages']
Server time: Wed, 9 Oct 2019 04:52:47 +0000
Error during template rendering
In template /app/catalog/templates/base_generic.html, error at line 7
Reverse for 'book-detail' with arguments '('',)' not found. 1 pattern(s) tried: ['catalog/book/(?P<pk>[0-9]+)$']
Это выглядит как вводящая в заблуждение ошибка для меня.
Кроме того, потому что код работает, как ожидалось на моемлокальные (т.е. показывающие мне все данные), поэтому это не похоже на проблему с кодированием, и поэтому я не могу понять реальную проблему здесь (и предоставил решения для других подобных проблем)
Я применил все миграции, поэтому среда выглядит нормально:
$ heroku run python manage.py migrate --remote heroku-prod
Running python manage.py migrate on <my app>... starting, run.5216 (Free)
Running python manage.py migrate on <my app>... connecting, run.5216 (Free)
Running python manage.py migrate on <my app>... up, run.5216 (Free)
Operations to perform:
Apply all migrations: admin, auth, catalog, contenttypes, sessions, social_django
Running migrations:
No migrations to apply.
HP@HP-PC MINGW64 ~/git_projects/prod/django_local_library (master)
Код для DEV / staging, который также одинаков.
Код: urls.py для ссылок, связанных с книгой
urlpatterns = [
path('books/', views.BookListView.as_view(), name='books'),
path('book/<int:pk>', views.BookDetailView.as_view(), name='book-detail'),
path('mybooks/', views.LoanedBooksByUserListView.as_view(), name='my-borrowed'),
]
views.py
class BookDetailView(LoginRequiredMixin, generic.DetailView):
model = Book
def get_context_data(self, **kwargs):
context = super(BookDetailView, self).get_context_data(**kwargs)
process_data(self.request)
return context
class LoanedBooksByUserListView(LoginRequiredMixin, generic.ListView):
"""Generic class-based view listing books on loan to current user. """
model = BookInstance
template_name = 'catalog/bookinstance_list_borrowed_user.html'
def get_queryset(self):
return BookInstance.objects.filter(borrower=self.request.user).filter(status__exact='o').order_by('due_back')
def get_context_data(self, **kwargs):
context = super(LoanedBooksByUserListView, self).get_context_data(**kwargs)
process_data(self.request)
return context
Шаблон
{% for bookinst in bookinstance_list %}
<li class="{% if bookinst.is_overdue %}text-danger{% endif %}">
<a href="{% url 'book-detail' bookinst.book.pk %}">{{bookinst.book.title}}</a> ({{ bookinst.due_back }})
</li>
{% endfor %}
Вчера вечером, после этого поста,Я отключил DEBUG в целях безопасности, т.е. установил DEBUG = False для постановки env, а такжеr локальный и добавленный хост в ALLOWED_HOSTS, локальный и промежуточный работают нормально, однако prod выдает ошибку 500:
FYI: staging и prod имеют одинаковые конфигурации, кроме имени хоста
Ссылка Настройка DEBUG = Ложные причины 500 Ошибка
Если я выполню откат до предыдущего подтвержденного кода, он начнет выдавать ошибку, выделенную в этом задании
Иесли я проверю непосредственно на heroku
HP @ HP-PC MINGW64 ~ / git_projects / prod / django_local_library (master) $ heroku запустить python manage.py runserver --remote heroku-prod
Он не выдает никаких исключений:
Performing system checks...
System check identified no issues (0 silenced).
October 09, 2019 - 21:18:54
Django version 2.2.5, using settings 'locallibrary.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Даже в журналах подготовки нет ошибок.
Пожалуйста, помогите мне, если кто-нибудь когда-либо сталкивался с такой проблемой.