Я хорошо разбираюсь в django, запустил django до 3 недель. Я столкнулся с проблемой, связанной с URL-адресом в теге привязки на странице html. Я включаю все файлы

Музыка urls.py

from django.conf.urls import url 
from . import views
app_name = 'music'
urlpatterns = [
      url(r'^$', views.index,name='music index'),
      url(r'^albums/$', views.albums,name='albums'),
      url(r'^albums/(?P<album_id>[0-9]+)/details/$',views.album,name='details')
]

Главная urls.py

from django.conf.urls import include,url
from django.contrib import admin
urlpatterns = [
      url(r'^$', include('music.urls')),
      url(r'^music/', include('music.urls')),
      url(r'^admin/', admin.site.urls),
]

Музыка views.py

from django.shortcuts import render , get_object_or_404
from .models import Albums,Music
def index(request):
      return render(request,'music/index.html',{})
def albums(request): 
      all_albums = Albums.objects.all()
      return render(request,'music/index.html',{'allalbums' : all_albums})
def album(request,album_id):
      single_album = get_object_or_404(Albums,pk=album_id)
      return render(request,'music/details.html' ,{'album' : single_album})

Index.html

<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
	<ul>
		<h1>This is music Page</h1>
		{% for album in allalbums %}
			<li><a href="{% url 'music:details' album.id %}">{{ album.album_name}}</a></li>
		{% endfor %}	
	</ul>
	
</body>
</html>

Settings.py

INSTALLED_APPS = [
'music.apps.MusicConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]

Но когда я запускаю этот код, у меня возникает эта проблема (прикрепление изображения) ... и еще кое-что ... Я использую linux, версию django 1.11.7 введите описание изображения здесь

1
Prad 2 Янв 2018 в 14:59

2 ответа

Лучший ответ

После долгих исследований и экспериментов я нашел решение, решаю проблему

Музыка urls.py

from django.conf.urls import url 
from . import views
# app_name = 'music' <- remove from here
urlpatterns = [
  url(r'^$', views.index,name='music index'),
  url(r'^albums/$', views.albums,name='albums'),
  url(r'^albums/(?P<album_id>[0-9]+)/details/$',views.album,name='details')
]

Просто удалите app_name = 'music' из urls.py и добавьте namespace = "movies" или namespace = "music" в метод include после объявление страницы urls в корневом / основном urls.py

Корневой urls.py

from django.conf.urls import include,url
from django.contrib import admin
urlpatterns = [
  url(r'^$', include('home.urls')),
  url(r'^movies/', include('movies.urls',namespace="movies")), #added here
  url(r'^music/', include('music.urls',namespace="music")), #added here
  url(r'^admin/', admin.site.urls),
]

Это будет работать нормально, и это только для версии 1.x, я думаю, но в версии 2.x выше (по вопросу) техника будет работать отлично

1
Prad 4 Янв 2018 в 04:32

Измените на это:

{% for album in allalbums %}
    <li><a href="/music/albums/{{album.id}}/details/">{{ album.album_name}}</a></li>
{% endfor %}    
0
yivi 2 Янв 2018 в 12:40