from django.db.models.signals import post_save
from django.dispatch import receiver
# method for updating
@receiver(post_save, sender=Zakaz)
def update_stock(sender, instance, **kwargs):
# instance - созданный объект, к которому можно обратится
# Здесь создавать объект
STATIC_URL = '/static/'
manage.py runserver
), в корневом урле нужно прописать.urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
После команды "python manage.py collectstatic" файл favicon.svg копируется в:
article_form = AddLectureForm()
content_form = AddContentForm()
context = {
'article_form ': article_form,
'content_form ': content_form
}
return render(request, 'main/render.html', context)
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form_one.as_p }}
{{ form_two.as_p }}
<input type="submit" value="ok">
</form>
при нажатии "+" или "-" значение joke.joke_rating соответственно увеличивалось или уменьшалось на один?
И еще почему-то JavaScript работает (в данном случае нет) только для верхнего анекдота. Для остальных выводит корректно joke_rating. Почему так?
<script type="text/javascript">
var joke_rating = '{{ joke.joke_rating }}';
document.getElementById('hi').innerHTML = joke_rating;
</script>
{% endblock %}
var joke_rating = '{{ joke.joke_rating }}';
, значение запишется в первый элемент. создать новую таблицу с нужными полями
добавить новые поля прямо в таблицу auth_user?
# models.py
def get_file_path(instance, filename):
"""
get_file_path - генерирует случайное имя для аватара
"""
ext = filename.split('.')[-1]
filename = "%s.%s" % (uuid.uuid4(), ext)
return os.path.join('avatars/%Y/%m/%d/', filename)
....
class UserAccount(AbstractUser):
"""
Расширенная модель пользователя. Добавлено
отчество, аватар и необязательный внешний
ключ к учебной группе.
"""
avatar = models.ImageField(verbose_name='Аватар',
upload_to=get_file_path, blank=True)
patronymic_name = models.CharField(verbose_name='Отчество',
max_length=150,
blank=True)
study_group = models.ForeignKey(StudyGroup, on_delete=models.PROTECT,
blank=True, null=True,
verbose_name='Учебная группа')
# settings.py
AUTH_USER_MODEL = 'accounts.UserAccount'
И нужно ли знать, как работает веб на низком уровне?
Choose.objects.get_or_create(voter=request.user)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>International Telephone Input</title>
<link rel="stylesheet" href="build/css/intlTelInput.css">
<link rel="stylesheet" href="build/css/demo.css">
</head>
<body>
<h1>International Telephone Input</h1>
<form>
{% csrf....
{{ form.as_p }} // Форма
<button type="submit">Submit</button>
</form>
<script src="build/js/intlTelInput.js"></script>
<script>
var input = document.querySelector("#phone"); // ID соответствующего инпута из формы
window.intlTelInput(input, {
// allowDropdown: false,
// autoHideDialCode: false,
// autoPlaceholder: "off",
// dropdownContainer: document.body,
// excludeCountries: ["us"],
// formatOnDisplay: false,
// geoIpLookup: function(callback) {
// $.get("http://ipinfo.io", function() {}, "jsonp").always(function(resp) {
// var countryCode = (resp && resp.country) ? resp.country : "";
// callback(countryCode);
// });
// },
// hiddenInput: "full_number",
// initialCountry: "auto",
// localizedCountries: { 'de': 'Deutschland' },
// nationalMode: false,
// onlyCountries: ['us', 'gb', 'ch', 'ca', 'do'],
// placeholderNumberType: "MOBILE",
// preferredCountries: ['cn', 'jp'],
// separateDialCode: true,
utilsScript: "build/js/utils.js", // Естественно скрипты должны быть в папке со статикой
});
</script>
</body>
</html>
# добавить путь в urls.py с ключем (к примеру lecture_id),
path('lections/<int:lecture_id>/', views.lections_detail, name='Curr_lecture'), # lecture_id
# views.py в представлении, которое вызывает этот путь, передавать этот ключ (названия должны быть идентичны)
def lections_detail(request, lecture_id): # lecture_id
lect = Lecture.objects.get(id=lecture_id)
В отдельном приложении есть модель UserPlan
логика ограничений расположена в __init__(или другом файле).
def check_can_user_create_post_now(user): if Post.objects.filter(created_at=today).count() == user.plan.posts_number_per_day: return False