stepan2112
@stepan2112
Турист

Oшибка django NoReverseMatch?

Решил освоить django подумал что хватит повторять все за мужиком из видео надо что то самому попробывать без подсказок и столкнулся с этим.

Reverse for 'boss' with no arguments not found. 1 pattern(s) tried: ['mymeteo/gorod/(?P[0-9]+)/$']
Request Method: GET
Request URL: 127.0.0.1:8000/mymeteo/gorod/4
Django Version: 3.0.3
Exception Type: NoReverseMatch
Exception Value:
Reverse for 'boss' with no arguments not found. 1 pattern(s) tried: ['mymeteo/gorod/(?P[0-9]+)/$']
Exception Location: /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/urls/resolvers.py in _reverse_with_prefix, line 677
Python Executable: /Library/Frameworks/Python.framework/Versions/3.8/bin/python3
Python Version: 3.8.1
Python Path:
['/Users/stepan/Desktop/django-pyowm/meteo',
'/Library/Frameworks/Python.framework/Versions/3.8/lib/python38.zip',
'/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8',
'/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/lib-dynload',
'/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages']
Server time: Вт, 10 Мар 2020 07:30:43 +0000

я понимаю что это за ошибка но не понимаю почему она выскакиваем у меня

вот так выглядит urls.py
from django.urls import path, include
from . import views

urlpatterns = [
    path ('list/', views.ListGorod.as_view(), name = 'listgorod'),
    path ('gorod/<int:id>/', views.MeteoList.as_view(), name = 'boss'),
]


вот так выглядит views.py

class MeteoList(View):

	def get (self, request, id):
		obj = Gorod.objects.get ( id__iexact = id)

		form = GorodForm(instance=obj)

		try:

			o=pyowm.OWM("262fea7ee569218476043b47466017ea")
			obs=o.weather_at_place(obj.gorod)
			w=obs.get_weather()
		except:
			o=pyowm.OWM("262fea7ee569218476043b47466017ea")
			obs=o.weather_at_place('biysk, RUS')
			w=obs.get_weather()

		wind = w.get_wind()
		temperature = w.get_temperature('celsius')
		return render(request, 'mymeteo/meteo_list.html',  context ={'temp' : w, 'temperature' : temperature, 'form':form})

	def post (self, request, id):
		obj = Gorod.objects.get (id__iexact = id)
		b_form = GorodForm(request.POST, instance=obj)

		new_obg = b_form.save()



		try:

			o=pyowm.OWM("262fea7ee569218476043b47466017ea")
			obs=o.weather_at_place(obj.gorod)
			w=obs.get_weather()
		except:
			o=pyowm.OWM("262fea7ee569218476043b47466017ea")
			obs=o.weather_at_place('biysk, RUS')
			w=obs.get_weather()

			wind = w.get_wind()
			temperature = w.get_temperature('celsius')
			return render(request, 'mymeteo/meteo_list.html',  context ={'temp' : w, 'temperature' : temperature, 'form':form})
		return redirect(new_obg)


и вот так выглядит get_absolute_url в моделях

class Gorod (models.Model):
	gorod = models.CharField(max_length = 50)

	def get_absolute_url(self):
		return reverse("boss", kwargs={"id" : self.id})

	


	def  __str__ (self):
		return self.gorod


я понимаю что скорей всего здесь помимо, есть еще куча других ошибок..но я даже до них добратся не могу.. потому что сталкиваюсь с NoReverseMatch. Я затеял это ради обучение и практики.
При этом я уже не первый раз пытаюсь сделать какие то тестовые проектики не по видео, а самостоятельно. И до этого момента такие конструкции работали.
Вообшем у меня прям тотальное не понимание почему срабатывает эта ошибка.
  • Вопрос задан
  • 90 просмотров
Пригласить эксперта
Ответы на вопрос 2
alternativshik
@alternativshik
по тексту ошибки видно, во что превращет ваши урлы джанга. И там в том урле нет ни одного kwarg, так что надо писать reverse("boss", args=[self.id])
Ответ написан
stepan2112
@stepan2112 Автор вопроса
Турист
проблема решена. она оказалась естествеyно очень глупой..но если вдруг кому пригодится...
то в шаблоне этой страницы в теге form в actions стоял не тот адрес
спасибо всем кто пытался помочь)
p.s. по итогу все работает и в get_absolute_url у меня всетаки стоит kwargs
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы