pip install SQLAlchemy
pip install sqlalchemy-orm-tree
class Color:
def __init__(self):
self.red = '\033[91m'
self.green = '\033[92m'
self.blue = '\033[94m'
self.cyan = '\033[96m'
self.white = '\033[97m'
self.yellow = '\033[93m'
self.magenta = '\033[95m'
self.grey = '\033[90m'
self.black = '\033[90m'
self.default = '\033[99m'
self.end_color = '\033[0m'
def color_print(self, data, color):
print(getattr(self, color) + data + self.end_color)
obj = Color()
obj.color_print('Текст красного цвета', 'red')
obj.color_print('Текст зелёного цвета', 'green')
obj.color_print('Текст синего цвета', 'blue')
env/
bin/
include/
lib/
lib64
share/
pip-selfcheck.json
pyvenv.cfg
source env/bin/activate
<header>
<p>Хедер</p>
</header>
<main>
<p>Пример контента</p>
<a id="page_up_down_button" href="#">Наверх</a>
</main>
<footer>
<p>Футер</p>
</footer>
#page_up_down_button {
position: sticky;
bottom: 0;
}
<script type="text/javascript">
var scroll_position = null;
$('#page_up_down_button').click(function(){
if ($(document).scrollTop() > 0) {
scroll_position = $(document).scrollTop();
$('#page_up_down_button').html('Обратно');
return true;
} else if (scroll_position > $(document).scrollTop()) {
$(document).scrollTop(scroll_position);
$('#page_up_down_button').html('Наверх');
return false;
};
});
function check_status_button(){
if ($(document).scrollTop() > 0) {
scroll_position = null;
$('#page_up_down_button').html('Наверх');
};
};
$(window).resize(function() {
check_status_button();
});
$(window).scroll(function() {
check_status_button();
});
</script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
class MyUserCreationForm(UserCreationForm):
def __init__(self, *args, **kwargs):
super(UserCreationForm, self).__init__(*args, **kwargs)
self.fields['username'].help_text = ''
self.fields['password'].help_text = ''
class MyUserCreationForm(UserCreationForm):
class Meta:
model = User
help_texts = {
'password': '',
'username': '',
}
class VariantAttributeForm(ModelForm):
def __init__(self, *args, **kwargs):
super(VariantAttributeForm, self).__init__(*args, **kwargs)
if 'instance' in kwargs:
self.fields['values'].queryset = Variant.objects.filter(filter=kwargs['instance'].filter)
class Meta:
model = VariantAttribute
fields = '__all__'
class VariantAttributeInline(admin.TabularInline):
form = VariantAttributeForm
def chat_login(request):
# Регистрируем псевдоним для чата на 30 дней
if 'register' in request.POST:
request.session.set_expiry(2592000) # устанавливаем время жизни сессии
request.session['username'] = request.POST['username']
# Удаляем псевдоним для чата из своей сессии
if 'unregister' in request.POST:
request.session['username'].pop(request.POST['username'])
from django.db import models
from django.db.models.signals import post_delete
def change_image(post_object):
# функция удаления изображений при их замене на новые
post_object = self
try:
pre_object = post_object.__class__.objects.get(id=post_object.id)
if pre_object.image != post_object.image:
pre_object.image.delete(save=False)
except:
pass
def delete_image(sender, **kwargs):
# функция удаления изображений при удалении объектов
try:
object_ = kwargs.get('instance')
storage, path = object_.image.storage, object_.image.path
storage.delete(path)
except:
pass
class MyModel(models.Model):
# наша модель с картинкой
image = models.ImageField(
upload_to='images/',
)
def save(self, *args, **kwargs):
# вызов change_image при сохранении объекта модели
change_image(post_object=self)
super(Category, self).save(*args, **kwargs)
# прикрепляем функцию delete_image к сигналу post_delete от модели MyModel
post_delete.connect(receiver=delete_image, sender=MyModel)
#, fuzzy
python3 manage.py compilemessages --use-fuzzy --locale=ru
python3 manage.py compilemessages -f -l ru