Рубрики
Без рубрики

DEV-Toolbar лучший друг веб-разработчика!

DEV-Toolbar – это простая концепция, которую мы придумали много лет назад. Идея состоит в том, чтобы предоставить разработчикам … Помечено Django, Python, WebDev.

dev-панель инструментов Это простая концепция, которую мы придумали много лет назад. Идея состоит в том, чтобы предоставить разработчикам с помощью Toolbelt, полной трюков (ярлыки, переключения, логин – как …), скрытые в интерфейсе. Это такая неотъемлемая часть моего рабочего процесса, которая обычно первым, что я настроил в любом проекте.

В этой записи мы увидим, как настроить его в веб-приложении Django. Мы сосредоточимся на Характеристика, которую все любят : возможность войти в систему как любое пользователя в базе данных (отличное заставка времени). Мы называем это олицвение И вот как это выглядит:

Простой выберите со всеми пользователями в вашей базе данных. Нажмите на один, и вы войдете в систему как ему/нее.

Давайте продолжимся!

1. Создайте приложение Dev

Мы начнем с создания нового приложения, которое мы позвоним дев . Он проведет всю нашу логику олицетворения, но также является полезным местом для того, чтобы держать руководство по стилю для разработчиков, или некоторые удобные фрагменты, чтобы поделиться командой, или, может быть, просто для размещения временного эксперимента.

python manage.py startapp dev

И не забудьте добавить его в свой Install_apps.

# ./your_app/settings.py
INSTALLED_APPS = [
  'dev.apps.DevConfig',
  # ...
]

2. Вид и URL

Здесь мы будем контролировать, если нынешний пользователь разрешен для того, чтобы осиливать или нет, и выполнить фактическую невероятку. В этом случае мы позволяем любому суперпулярру войти как любой другой пользователь, но вы можете выбрать любые другие критерии, например, только в среде разработки или только если Отладка это Правда .

# ./dev/views.py
from django.shortcuts import redirect, render, get_object_or_404
from django.contrib.auth import get_user_model, login
from django.http import Http404

def impersonate(request, user_id):
  current_user = request.user
  if current_user.is_superuser:
    user = get_object_or_404(get_user_model(), pk=user_id)
    login(request, user)
    return redirect('/dev')
  else:
    raise Http404("Impersonate is only available for superusers")
# ./dev/urls.py
from django.conf.urls import url
from . import views

app_name = 'dev'
urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^impersonate/(?P[0-9]+)/$', views.impersonate, name='impersonate'),
]
# ./your_app/urls.py
from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^dev/', include('dev.urls')),
    url(r'^admin/', admin.site.urls),
]

3. Метка шаблона

Мы хотим повторно использовать нашу панель инструментов во многих шаблонах, поэтому мы извлеким его в свой собственный тег шаблона, используя Включение Django-Tags Функциональность.

Для этого вам нужно создать этот каталог: ./dev/templatetags и пустой __init__.py Файл внутри этого.

Внутри нашей папки Templatetags мы создадим следующий файл, который действует как вид нашего нового dev_toolbar templatetag. Обратите внимание на 2 вещи:

  1. Сначала мы связываем это с шаблоном dev/toolbar.html что мы определим позже.
  2. И второе мы используем take_context = true Чтобы иметь возможность доступа к текущему пользователю. Это позволит нам сделать некоторую базовую авторизацию (то есть. Только суперпользователи могут использовать эту функцию). Это избыточно с логикой, которую мы определили ранее, но хорошо иметь сеть безопасности, когда вы обрабатываете деликатные данные.
# ./dev/templatetags/dev_toolbar.py
from django.contrib.auth import get_user_model
from django import template

register = template.Library()

@register.inclusion_tag('dev/toolbar.html', takes_context=True)
def dev_toolbar(context):
  request = context['request']
  current_user = request.user
  if current_user.is_superuser:
    users = get_user_model().objects.all()
  else:
    users = []
  return {'users': users, 'current_user': current_user}

Файл шаблона содержит свой собственный CSS, JavaScript и HTML. Некоторые простые позиционирование и стиль и бит CSS + JS логика, чтобы сделать бар более тонким.

Мы сделаем поле Select со всеми пользователями в базе данных, и JavaScript позаботится о вызове олицетворящих действий всякий раз, когда мы выбираем другой пользователь, кроме себя. Еще две удобные ссылки на /dev. и /admin. Области включены.

Последнее, но не менее важное, я обычно включаю небольшую кнопку закрытия, иногда он пригодится, когда делает работу CSS, вы просто хотите избавиться от бара.


{% if current_user.is_superuser %}


dev admin {% if users %} {% endif %}
{% endif %}

4. Используй это

Наша функция завершена и готова к использованию. Просто загрузите его в любое представление и позвоните в него.

{% load dev_toolbar %}
{% dev_toolbar %}

5. Покажите это на панели администратора

Мы собираемся переопределить по умолчанию admin/index.html Шаблон и включить наши новые dev_toolbar фрагмент. Для этого нам нужно создать универсальный ./темплиты каталог в корне проекта и добавить его в Шаблоны ['Dirs'] В настройках проекта.

# ./your_app/settings.py
TEMPLATES = [
  {
    'DIRS': [os.path.join(BASE_DIR, 'templates')],
    # ...
  }
]

И теперь создайте новый файл, чтобы переопределить шаблон индекса администратора по умолчанию.


    {% extends "admin/index.html" %}
    {% load dev_toolbar %}

    {% block sidebar %}
        {{block.super}}
        {% dev_toolbar %}
    {% endblock %}

использованная литература

Этот пост был первоначально опубликован на ariera.github.io

Оригинал: “https://dev.to/ariera/dev-toolbar-a-web-developers-best-friend”