【问题标题】:fix for NoReverseMatch error after integrating django package (django-audiotracks)在集成 django 包 (django-audiotracks) 后修复 NoReverseMatch 错误
【发布时间】:2017-12-12 02:09:43
【问题描述】:

我对 django 比较陌生。我正在尝试将 audiotracks 包与我的项目集成。我正在尝试集成 audiotracks 包,但出现 NoReverseMatch 错误。 文档说明..

audiotracks 添加到您的应用 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

编辑settings.py 并将audiotracks 添加到您的列表中 INSTALLED_APPS。然后同步你的数据库::

$ python manage.py syncdb

编辑你的 ROOT_URLCONF_ 并添加一段类似于::

的代码
urlpatterns += patterns('',
    # Here we mount the app under /music. Feel free to use something else
    url("^music", include("audiotracks.urls")),
    # Some URLs require a Django username
    url("^(?P<username>[\w\._-]+)/music", include("audiotracks.urls")),
)

访问 URL /music/upload 上传您的第一首曲目。

当我尝试访问音乐/上传时发生错误..

这是完整的追溯。

环境:

请求方法:GET 请求网址:http://127.0.0.1:8000/music/upload

Django Version: 1.11.3
Python Version: 3.6.0
Installed Applications:
['account',
 'music',
 'audiotracks',
 'django.contrib.sites',
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']

模板错误: 在模板 C:\Users\Alexander\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django_audiotracks-0.2.5-py3.6.egg\audiotracks\templates\audiotracks\base.html,错误在第 25 行 未找到带有参数 '('addemo1',)' 的 'user_index' 的反向操作。尝试了 2 种模式:['music/tracks/(?P\d)/?$', 'music/tracks$']

15 :       .errorlist { color: red; list-style: none; display: inline; }
   16 :     </style>
   17 :     {% block extra_head %}{% endblock %}
   18 :   </head>
   19 :   <body>
   20 :
   21 :   {% block subnav %}
   22 :       {% if user.is_authenticated %}
   23 :           <ul>
   24 :             <li><a href="{% url 'audiotracks' %}">{% trans 'Latest tracks' %}</a></li>
   25 :             <li><a href=" {% url 'user_index' user.username %} ">{% trans 'Your tracks' %}</a></li>
   26 :             <li><a href="{% url 'upload_track' %}">{% trans 'Upload track' %}</a></li>
   27 :           </ul>
   28 :       {% else %}
   29 :           &nbsp;
   30 :       {% endif %}
   31 :   {% endblock %}
   32 :
   33 :   {% if messages %}
   34 :   <ul class="messages">
   35 :     {% for message in messages %}

追溯:

内部文件“C:\Users\Alexander\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\handlers\exception.py” 41. response = get_response(request)

_legacy_get_response 中的文件“C:\Users\Alexander\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\handlers\base.py” 249. response = self._get_response(request)

_get_response 中的文件“C:\Users\Alexander\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\handlers\base.py” 187. response = self.process_exception_by_middleware(e, request)

_get_response 中的文件“C:\Users\Alexander\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\handlers\base.py” 185. response = Wrapped_callback(request, *callback_args, **callback_kwargs)

_wrapped_view 中的文件“C:\Users\Alexander\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\contrib\auth\decorators.py” 23. return view_func(request, *args, **kwargs)

wrapped_view 中的文件“C:\Users\Alexander\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\views\decorators\csrf.py” 58. return view_func(*args, **kwargs)

upload_track 中的文件“C:\Users\Alexander\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django_audiotracks-0.2.5-py3.6.egg\audiotracks\views.py” 109. return render(request, "audiotracks/new.html", {'form': form})

渲染中的文件“C:\Users\Alexander\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\shortcuts.py” 30. content = loader.render_to_string(template_name, context, request, using=using)

render_to_string 中的文件“C:\Users\Alexander\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\template\loader.py” 68. return template.render(context, request)

渲染中的文件“C:\Users\Alexander\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\template\backends\django.py” 66. return self.template.render(context)

渲染中的文件“C:\Users\Alexander\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\template\base.py” 207. return self._render(context)

_render 中的文件“C:\Users\Alexander\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\template\base.py” 199. return self.nodelist.render(context)

渲染中的文件“C:\Users\Alexander\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\template\base.py” 990. bit = node.render_annotated(context)

render_annotated 中的文件“C:\Users\Alexander\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\template\base.py” 957. return self.render(context)

渲染中的文件“C:\Users\Alexander\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\template\loader_tags.py” 177. 返回已编译的_parent._render(context)

_render 中的文件“C:\Users\Alexander\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\template\base.py” 199. return self.nodelist.render(context)

渲染中的文件“C:\Users\Alexander\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\template\base.py” 990. bit = node.render_annotated(context)

render_annotated 中的文件“C:\Users\Alexander\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\template\base.py” 957. return self.render(context)

渲染中的文件“C:\Users\Alexander\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\template\loader_tags.py” 72. 结果 = block.nodelist.render(context)

渲染中的文件“C:\Users\Alexander\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\template\base.py” 990. bit = node.render_annotated(context)

render_annotated 中的文件“C:\Users\Alexander\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\template\base.py” 957. return self.render(context)

渲染中的文件“C:\Users\Alexander\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\template\defaulttags.py” 322. 返回nodelist.render(context)

渲染中的文件“C:\Users\Alexander\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\template\base.py” 990. bit = node.render_annotated(context)

render_annotated 中的文件“C:\Users\Alexander\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\template\base.py” 957. return self.render(context)

渲染中的文件“C:\Users\Alexander\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\template\defaulttags.py” 458. url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)

文件 "C:\Users\Alexander\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\urls\base.py" 反向 91. return force_text(iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)))

_reverse_with_prefix 中的文件“C:\Users\Alexander\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\urls\resolvers.py” 497. raise NoReverseMatch(msg)

异常类型:/music/upload 处的 NoReverseMatch 异常值:未找到带有参数 '('addemo1',)' 的 'user_index' 的反向。尝试了 2 种模式:['music/tracks/(?P\d)/?$', 'music/tracks$']

【问题讨论】:

  • 您不可能遵循该指示;除此之外,patterns 在 Django 1.11 中不再存在。请出示您的完整 urls.py。
  • 感谢您指出这一点。我添加了第二个网址,它起作用了..@DanielRoseman

标签: python django audio-player


【解决方案1】:
from django.conf.urls import url, include
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
from django.views.static import serve
from django.contrib.staticfiles.urls import staticfiles_urlpatterns

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^account/', include('account.urls')),
    url(r'^music/', include('music.urls')),
    url(r'^music/', include('audiotracks.urls')),
    url(r'^(?P<username>[\w\._-]+)/music', include('audiotracks.urls')),
]

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

if settings.DEBUG:
    urlpatterns += [
        url(r'^site_media/(?P<path>.*)$', serve, {
            'document_root': settings.MEDIA_ROOT
        })
    ]
    urlpatterns += staticfiles_urlpatterns()

【讨论】:

    猜你喜欢
    • 2018-08-12
    • 1970-01-01
    • 2018-04-21
    • 2015-10-24
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多