【问题标题】:Django NoReverseMatch Error while Deploying部署时出现 Django NoReverseMatch 错误
【发布时间】:2019-03-12 13:03:59
【问题描述】:

我正在使用 Django-friendship 包来建立追随者关系。在 localhost 中它工作得很好,但是当我部署它时它会给出一个错误

Reverse for 'follower_add_new' with arguments '('Bora.gulerrr',)' not found. 1 pattern(s) tried:
['tr/friendship/follower/add/(?P<followee_username>\\w+)/$']

我不知道为什么它在部署时出错。

views.py

@login_required
    def follower_add(request, followee_username, template_name='friendship/follow/add.html'):



        """ views.py """
        #ctx = {'followee_username': followee_username}

        if request.method == 'POST':
            followee = user_model.objects.get(username=followee_username)
            follower = request.user
            try:
                Follow.objects.add_follower(follower, followee)
            except AlreadyExistsError as e:
                ctx['errors'] = ["%s" % e]
            else:
                return redirect('followees')

        return render(request, template_name, ctx)
    `

urls.py

urlpatterns = [
       re_path(r'^follower/add/(?P<followee_username>\w+)/$',follower_add,name = "follower_add_new"),
       re_path(r'^follower/remove/(?P<followee_username>\w+)/$',follower_remove,name = "follower_remove_new"),

    ]

home.html

<div class="col">
        <h4>{%trans "People and Companies" %}</h4><br><br>
        <h5>{%trans "Filter" %}</h5>
        <form method="get">
            {{ filter.form| crispy }}
            <button type="submit">{%trans "Search" %}</button><br><br>
        </form>

        {% for user in filter.qs %}
            {% if not user in blocking %}
                {% if not user in blockers %}        

                    {% if not user in followees  %} 

                            <table class="table">
                                <tbody id="myTable">                            
                                <tr>
                                    <th scope="row"><a href="{% url 'user:view_profile_with_pk' pk=user.pk %}">
                                        {% if user.accounts.image %}
                                        <img src="{{user.accounts.image.url}}" width="50" alt="Profile Photo">&nbsp;&nbsp;&nbsp;&nbsp;
                                        {% else %} No Photo &nbsp;&nbsp;&nbsp;&nbsp; {% endif %}
                                        {% if user.first_name %}
                                        {{ user.first_name }}&nbsp;&nbsp;{{ user.last_name }}{% else %}{{ user.username }}{% endif %}&nbsp;&nbsp;&nbsp;&nbsp;{% if not user in followees %}
                                        <a href="{% url 'follower_add_new' user.username %}">follow</a>{% else %}
                                        <a href="{% url 'follower_remove_new' user.username %}">unfollow</a>{% endif %}
                                        | <a href="{% url 'block_add' user.username %}">block</a> </th>                     
                                </tr>                           
                                </tbody> 

                    {% endif %}
                {% endif %}

            {% else %}

            {% endif %}
        {% endfor %}
        </ul>


    </div>

【问题讨论】:

  • 这是什么Bora.gulerrr'是这个追随者
  • “Bora.gulerrr”是刚刚注册的用户名
  • 所以当你去这个链接follower/add/Bora.gulerrr 是它给出错误
  • 我列出了在我的网站上注册的人,您可以将用户添加到您的关注者列表中,例如 instagram。
  • 你能分享followees网址吗

标签: django deployment django-templates django-views


【解决方案1】:

您正在使用\w+ 作为用户名。这允许大写 A-Z、小写 a-z、数字 0-9 和下划线。但是它不允许.,因此Bora.gulerrr 的URL 将不匹配。

您可以通过将用户名限制为匹配 \w+、为匹配 \w+ 的用户模型创建一个 slug 字段或通过接受更多字符来解决此问题,例如:

re_path(r'^follower/add/(?P<followee_username>[\w\.-]+)/$',follower_add,name = "follower_add_new"),
re_path(r'^follower/remove/(?P<followee_username>[\w\.-]+)/$',follower_remove,name = "follower_remove_new"),

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-07
    • 1970-01-01
    • 2017-09-05
    相关资源
    最近更新 更多