私は奇妙な動作があります。誰かが何が間違って言うことができますか?AJAXをリフレッシュした後にテンプレートで作業していないユーザー権限がありますか?
テンプレートでは、以下の図のようにオブジェクトのリストを表示します。ユーザーがフォームでデータを追加/編集/削除すると、AJAXによってユーザーのリストが更新されます。
問題は、AJAXボタンによるリフレッシュがリスト内で消えてしまうことです。 {% if perms.foo.do_something %}
はAJAXで動作しないようです。何が間違っているとこの問題を解決する方法?
P.S.ブラウザでページをリフレッシュすると同時に、{% if perms.foo.do_something %}
が完璧に動作します。権限を正しく表示する。私は混乱しています。 AJAXによるリフレッシュリストの後
:開始時
のjavascript:
// Submit Form
$(function() {
var saveForm = function() {
var form = $(this);
$.ajax({
url: form.attr("action"),
data: form.serialize(),
type: form.attr("method"),
dataType: 'json',
success: function (data) {
if (data.form_is_valid) {
$("#users").html(data.html_users);
$("#user-modal").modal("hide");
}
else {
$("#user-modal .modal-content").html(data.html_form);
}
}
});
return false;
};
// Update User Data
$("#users").on("click", ".user-edit-btn", loadForm);
$("#user-modal").on("submit", ".user-edit-form", saveForm);
});
はviews.py:
class UserEditView(UpdateView):
template_name = 'users/edit_user.html'
form_class = UserEditForm
model = User
permission_required = ('auth.change_user')
def form_valid(self, form):
form.save()
data = dict()
data['form_is_valid'] = True
context = {'users': User.objects.order_by('username')}
data['html_users'] = render_to_string('users/users.html', context)
return JsonResponse(data)
***
users.html:テンプレートで
{% for user in users %}
<div class="list-group-item" data-id='{{ user.pk }}'>
{{ user.username }} ({{ user.email }})
{% if perms.auth.change_user_password %}
<button class="btn btn-info user-password-change-btn" data-url="{% url 'user:user_password_change' pk=user.pk %}">
<i class="fa fa-lock"></i>
</button>
{% endif %}
{% if perms.auth.delete_user %}
<button class="btn btn-danger user-delete-btn" data-url="{% url 'user:user_delete' pk=user.pk %}">
<i class="fa fa-ban"></i>
</button>
{% endif %}
{% if perms.auth.change_user %}
<button class="btn btn-warning user-edit-btn" data-url="{% url 'user:user_edit' pk=user.pk %}">
<i class="fa fa-pencil"></i>
</button>
{% endif %}
</div>
{% endfor %}
私の疑問は、あなたの場合は条件 'パーマということです.auth.change_user_password'が満足しない、またはfalseを返す – bipen
あなたの 'context'に' perms'がありますか? 'context'は' users'しか含んでいないようです。 – Sraw
@bipenこの条件は、ページを読み込んだり、ページを更新したりするとTrueを返します。しかし、AJAXだけのユーザーのリストでリフレッシュすると、条件はFalseを返します。 –