@jagrmi
beginner python developer

Почему происходит перелогинивание? ( нужно реализовать ограниченный доступ, если юзер залогиненый не совпадает с тем кого выбрал в выпадающем списке)?

1. По списку исполнителей из таблицы auth_user строю html-страницу
{% for us in users %}
        {{ forloop.counter }}
        <tr>
            <th>{{ us.id }}</th>
            <th><a href={% url 'projects' pk=us.id name=us.username %}> {{ us.username }}</a></th>
            <th>{{ user.groups }}</th>
        </tr>
    {% endfor %}

2. Выбираю одного из юзеров из таблицы и перехожу по ссылке
в urls.py
url(r'^projects/(?P<name>\w+)-(?P<pk>\d+)/$', ProjectsView.as_view(), name='projects'),


3. во views.py
class ProjectsView(DetailView):
    model = User
    template_name = 'projects.html'

    def get_context_data(self, **kwargs):
        context = super(ProjectsView, self).get_context_data(**kwargs)
        modules = ModuleWork.objects.filter(executor=self.kwargs['pk'])
        context['name'] = self.kwargs['name']
        context['modules'] = modules
        return context


4. все это передаю в шаблон
5. предварительно до этого я залогинился одним из пользователей таблицы из пункта 1
и хочу сделать так, чтобы если я залогился и выбрал не свое имя по пункту 2, я не смог редактировать данные,а только просматривал к примеру.
{% block table %}
    <div class="scrollable">
        <table>
            <thead>
            <tr>
                <th>#</th>
                <th>Код проекта</th>
                <th>Исполнитель проекта</th>
                <th>Описание проекта</th>
                <th>Дата проекта</th>
            </tr>
            </thead>
            <tbody>
            {% for module in modules %}
                <tr>
                <th>{{ module.pk }}</th>
                <th><a href={% url 'module' pk=module.id%}>{{ module.project }}-{{ module.room }}{{ module.room_number }}-
                {{ module.module }}{{ module.module_number }}</a></th>
                <th>{{ module.executor }}</th>
                <th>{{ module.project }}</th>
                <th>{{ module.module_work_is_produced }}</th>
                </tr>
            {% endfor %}
            </tbody>
        </table>
    </div>

{% endblock %}


Сейчас когда я кликаю по имени пункт 2, у меня на странице следующей происходит перелогинивание автоматом.

0dc6dcd1df554e60abb8c9fdbed72c15.PNG14caa6a161054ae3940eba6f0288bd58.PNG
  • Вопрос задан
  • 176 просмотров
Решения вопроса 1
@jagrmi Автор вопроса
beginner python developer
javedimka @javedimka
Andrei Ramanchyk: Один гугл запрос сказал - apparently, DetailView возвращает в контекст две переменные через которые можно обратиться к объекту - object и само имя модели в нижнем регистре, т.е. user, поэтому твой user переписывается в шаблоне.
Ну и про request.user - в новых джангах оказывается просто user можно, как у тебя в коде, НО так как тут такая проблема с именами, прямое обращение через request должно решить проблему, ну и тогда - request.user.is_authenticated
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы