在视图.py在
def index(request):
""""""""""""""
registerform = UserRegisterForm(request.POST)
createprofileform = UserCreateProfileForm(request.POST)
if registerform.is_valid() and createprofileform.is_valid():
result = registerform.save(commit=False)
result.set_password(request.POST['password']) #set member password
result.username = username
result.save()
member.user_id = user.id
member.member_id = result.id
member.save() #new member registration
member_profile = UserProfile.objects.get(user=result.id)
createprofileform = UserCreateProfileForm(request.POST, instance=member_profile)
createprofileform.save() #create member profile
createprofileform = UserCreateProfileForm()
member_save_msg = 'New member has been added.'
""""""""""""
return render(request,'index.html',{ 'registerform': registerform,'createprofile': createprofileform,})
在索引.html在
^{pr2}$以上视图.py以及索引.html用于保存新的用户条目。在
我的html模板分为两部分,主要帐户持有人选项卡和授权记者主选项卡“帐户持有人”选项卡用于保存配置文件信息,而“授权报告人”选项卡用于创建新的用户.on页面加载主帐户持有人选项卡将处于活动状态,用户选项卡将处于活动状态隐藏。如果选择“用户”选项卡,主账户持有人选项卡将隐藏。一次用户已保存,用户详细信息显示在下面,格式如下。在
{% for list in member_list %}
<tr class="ir-shade">
<td style="width:120px;"><span><input type="submit" name="delete" value="{{list.0.id}}" class="delete_reporter" /></span><button> id="{{ list.0.id }}" class="openDiv">{{list.0.first_name|title}} {{list.0.last_name}}</button></td>
<td style="width:410px;"> {{list.0.email}} {{list.1.phone_daytime}} {{list.1.phone_mobile}}</td>
</tr>
{% endfor %}
我真正想要的是在可编辑模式下单击<button> id="{{ list.0.id }}" class="openDiv">{{list.0.first_name|title}} {{list.0.last_name}}</button>
保存的用户数据应该显示在同一个字段中按钮。开点击该按钮,与用户id相关的数据将以可编辑模式显示。在
js公司:
$('.openDiv').click(function () {
var id = $(this).attr('id');
var csrf_token = $("#csrf_token").val();
$.ajax({
data:{
csrfmiddlewaretoken: ('{{csrf_token}}'),
id:id,
},
type:'POST',
url: '/setting/save-reporter/',
success: function(data) {
$('#authorisedreporter').html(data);
}
});
});
下面是视图.py和html是为显示保存的表单而编写的实例。现在我可以显示保存的表单实例,并将实例加载到authoredreporter div(请签入js和索引.html)。此时如果我kit save,它将创建新记录,它将调用视图.py与索引方法相关。我要更新而不是保存记录。在
保存_报告者.html在
<form method="post" action="." id="{{ id }}">
{% csrf_token %}
<table width="100%">
<tr>
<td style="width:100px;">First name:</td><td>{{form.first_name}}</td>
</tr>
<tr>
<td>Last name:</td><td>{{form.last_name}}</td>
</tr>
<tr>
<td>Daytime phone:</td><td>{{profile.phone_daytime}}</td>
</tr>
<tr>
<td>Mobile phone:</td><td>{{profile.phone_mobile}}</td>
</tr>
<tr>
<td>Email:</td><td>{{form.email}}</td>
</tr>
<tr>
<td>Password</td><td>{{form.password}}</td>
</tr>
<tr>
<td colspan=2"<p align="right">{% include "buttons/save.html" %}</p></td>
</tr></table></form>
在视图.py在
def save_reporter(request):
user = request.user
id = request.POST.get('id')
user = User.objects.get(pk =id)
userprofile = UserProfile.objects.get(user=user.id)
form = ReporterRegisterForm(instance=user)
profileform = ProfilecontactForm(instance=userprofile)
return render(request, 'setting/save_reporter.html',
{'form': form,
'id':id,
'profile':profileform
})
我已经解释了我目前面临的问题,请你帮我做这个。谢谢在
检查服务器是否返回任何错误消息:
})
编辑:
提交表单时不传递用户id。尝试做一些类似的事情:
^{pr2}$让我分析一下您的JS代码,因为我可以看到一些错误/错误:
据我所知,在单击链接之后,您将使用AJAX向Django视图发送请求,以取回正确的实例化表单。所以你应该:
首先,简化您的JS代码:
^{pr2}$下一步,将旧视图拆分为多个视图,以集中精力处理它需要做的事情(注意:您可以将
index
视图保持原样):您可以看到这里有两个函数:一个用于从AJAX获取正确的表单,另一个用于通过普通表单提交保存数据。当然,您应该相应地生成
urls.py
,类似于:您可能还注意到,您应该创建一个新的模板
setting/register_form.html
,它只包含您的注册表单HTML(注意:您需要一个隐藏的id
字段,该字段由上面的fetch_reporter_form
视图返回)来标识该表单:所以流程是:
index
视图。有几种形式可以正常保存新记者等。在.openDiv
按钮。它将把上面的AJAX请求发送到fetch_reporter_form
以获得正确的表单。(此时您的代码运行良好)update_report
视图并更新报告器。在我只是想告诉你基本的想法。剩下的部分很简单,所以我想你可以很容易地继续。希望有帮助!在
让我继续你的工作:
这里设置了一个Ajax异步查询来将数据发送到服务器。当查询到达服务器时,如果没有崩溃,则调用
^{pr2}$success:
回调,javascript不做任何操作(return true;
)。在这里,在异步Ajax查询结束之前显示一个HTML节点(成功或失败)。要在Ajax查询完成后显示元素,请将此代码放入
success:
或error:
回调中。在最后,如果计算一下您的},您将看到
(
、)
、{
和{$('#authorisedreporter').show();
在单击回调之外。因此,如果它不在document ready回调中,它将不起作用。在所以正确的Javascript代码应该是(我认为):
编辑:
关于你的视图.py,保存用户配置文件,但不将任何内容返回到客户端浏览器。没有什么。在
相关问题 更多 >
编程相关推荐