django视图';获取';不起作用';邮政';行得通

django视图';获取';不起作用';邮政';行得通,django,django-views,django-urls,Django,Django Views,Django Urls,我不知道为什么,但如果我试图“获取”此视图,我会出现以下错误: django.url.exceptions.NoReverseMatch:找不到参数为“(“”,)”的“配置文件更新名称”的反转。尝试了1个模式:['ce_profiles/profile\\-update\\\-name/(?P[0-9]+)/$'] 但是如果提交一个“POST”请求,一切都很好 以下是工作流程: 首先,我访问此视图和模板: def customer_profile(request, pk): name =

我不知道为什么,但如果我试图“获取”此视图,我会出现以下错误:

django.url.exceptions.NoReverseMatch:找不到参数为“(“”,)”的“配置文件更新名称”的反转。尝试了1个模式:['ce_profiles/profile\\-update\\\-name/(?P[0-9]+)/$']

但是如果提交一个“POST”请求,一切都很好

以下是工作流程:

首先,我访问此视图和模板:

def customer_profile(request, pk):
    name = get_object_or_404(CEName, id=pk)
    return render(
        request,
        'customer/customer_profile.html',
        {'profile_name': name}
    )

{% block content %}
  {% include 'ce_profiles/name_header.html' %}
  <div id="name" class="container d-flex justify-content-between pt-1">
    {% include 'ce_profiles/profile_name.html' %} <!-- displays the profile_name -->
    <button id="update_button" action="{% url 'ce_profiles:profile-update-name' profile_name.id %}" class="bold btn btn-main btn-sm button-main">UPDATE</button>
  </div>
  <div id="div_NameForm" class="container">
  </div>
{% endblock %}

{% block script %}
  <script src="{% static 'ce_profiles/ce_profiles.js' %}"></script>

{% endblock %}
这是模板。少了什么吗

更新_NameForm.html

<div id="div_NameForm" class="container">
  <hr size="3px">
  <form id="NameForm" method="POST" action="{% url 'ce_profiles:profile-update-name' profile_name.id %}">
    {% csrf_token %}
    {{ NameForm.as_p }}
    <div id="NameForm_errors"></div>
    <br>
    <button id="save_changes" type="submit" class="btn btn-main button-main btn-block">Save Changes</button>
  </form>
</div>


{%csrf_令牌%} {{NameForm.as_p}}
保存更改
您可以使用
render()
,而不是使用
render\u to\u string
,并且忘记将变量
profile\u name
:发送到模板

def profile_update_name(request, pk):
    name = get_object_or_404(CEName, id=pk)
    if request.POST:
       ''' code '''

    # no need to use else statement
    # since 'return' breaks the 'if request.POST' statement
    name_form = NameForm(instance=name)
    context = {
        profile_name:name,
        'NameForm': name_form,
    }
    return render(request,'ce_profiles/update_NameForm.html',context) 
请注意,您可以将
action=''
保留为空,其形式表示相同的视图

 <form id="NameForm" method="POST" action="">


可能是yout update_NameForm.html模板中的链接,该链接引用了URL.py中未定义的名称files@vctrd我添加了模板您可以显示视图呈现的模板吗?您不需要将此变量发送到模板:
profile\u name
,因此,
profile\u name.id
将不存在。我需要
render\u to\u string
将我的表单AJAX到另一个视图,但是
'profile\u name':name
完全修复了它。你必须给我看一个。我费了好大劲才弄明白如何将多字段表单AJAX到一个视图并得到响应。应该有人为此做一个像样的指导。我无法使
render()
工作。这取决于您在
js
中如何处理响应,响应将不同
[render\u to\u string()](https://docs.djangoproject.com/en/2.1/topics/templates/#django.template.loader.render_to_string)
加载像get_template()这样的模板,因此您可以在js
element.html中使用(response)
由于响应只是一个字符串…render()快捷方式调用render_to_string(),并将结果馈送到适合从视图返回的HttpResponse中,在js中,您可以将响应作为js对象进行操作。。就像您可以在响应中查询选择器一样。
$(response)。查找(“#标记”)
我没有任何链接,抱歉,我只是现在没有连接这些点。我想我需要查看完整的代码,以便理解。谢谢您的帮助。
def profile_update_name(request, pk):
    name = get_object_or_404(CEName, id=pk)
    if request.POST:
       ''' code '''

    # no need to use else statement
    # since 'return' breaks the 'if request.POST' statement
    name_form = NameForm(instance=name)
    context = {
        profile_name:name,
        'NameForm': name_form,
    }
    return render(request,'ce_profiles/update_NameForm.html',context) 
 <form id="NameForm" method="POST" action="">