INSTALLED_APPS = [
.....
'django.contrib.sites',
]
MIDDLEWARE = [
'django.middleware.common.CommonMiddleware',
'app_name.middleware.multisite.DomainRouterMiddleware',
..............
]
class Site(models.Model):
"""
Модель в которой будут храниться подключаемые сайты
"""
domain = models.CharField("Домен", max_length=120)
name = models.CharField("Имя", max_length=320)
appname = models.CharField("Имя приложения", validators=[_appname_validator], max_length=120)
objects = SiteManager()
def __str__(self):
return self.name
class Meta:
db_table = "site"
verbose_name = "Сайт"
verbose_name_plural = "Сайты"
ordering = ('domain',)
class DomainRouterMiddleware(object):
"""
Middleware в которой происходит редирект на нужный urlconf.
Пример: Есть объект < 'Site' domain="example.com", name='Example', appname='example'>
При запросе на сайт example.com пользователь будет перенаправлен в приложение example в модуль example.urls
"""
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
host = request.get_host() # Получаем имя доменна в запросе
site = Site.objects.get(domain=host) # Пытаемся найти данный домен в django sites
request.urlconf = '%s.urls' % site.appname # Перенаправляем пользователя в нужный url конфиг
return self.get_response(request)
Site.objects.create(domain="example.com", name='Example', appname="example")
from json import JSONDecodeError
if contents.status_code == 200 and contents.headers.get("Content-Type") == "application/json":
try:
data = contents.json()
except JSONDecodeError:
print("Error")
Как распознавать все существующие модели, подключённых в проект приложенийЧерез ContentType, вы можете получить все модели зарегистрированные в вашем приложении
from django.contrib.contenttypes.models import ContentType
queryset = ContentType.objects.all()
for model in queryset:
print(model.model_class())
import datetime
def fishspeed_bonus(request):
now = datetime.datetime.now()
bonus_time = request.session.get("bonus_time")
if bonus_time:
delta = now - datetime.datetime.fromisoformat(bonus_time)
if delta.days > 0:
bonus = True
else:
bonus = False
else:
request.session['bonus_time'] = datetime.datetime.now().isoformat()
bonus = True
return render(request, 'fishspeed/bonus.html', {"bonus": bonus})
{% if bonus %}
<button type="submit" class="btn btn-blue btn-righ" name="button" value="button">GET BONUS</button>
{% else %}
<b class="my">Next bonus after 24 hours</b>
{% endif %}
</center>
class Addbookmark(View):
def post(self, request, pk):
child = Child.objects.get(id=pk)
new_bookmark = BookmarksModel.objects.create(child=child)
session_bookmarks = request.session.get("bookmarks_id", [])
session_bookmarks.append(new_bookmark.id)
request.session['bookmarks_id'] = session_bookmarks
return redirect('/bookmarks/all-bookmarks/')
class BookmarksListView(ListView):
model = BookmarksModel
context_object_name = 'bookmarks'
template_name = 'bookmarks/bookmarks.html'
def get_queryset(self):
return self.model.objects.filter(id__in=self.request.session.get("bookmarks_id", []))
from threading import Thread
import time
class CustomThread(Thread):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.is_running = True
def run(self):
while self.is_running:
if "" == 'first choice':
time.sleep(5)
if "" == 'second choice':
# Do something
time.sleep(5)
def terminate(self):
self.is_running = False
thread = CustomThread(daemon=True)
thread.start() # Запускаем thread
thread.terminate() # Останавливаем thread
files = []
for rootdir, dirs, files in os.walk("some path"):
for file in files:
if file.split(".")[-1] == "defaultVars":
files.append(os.path.join(rootdir, file))
<head>
{% block head %}{% endblock %}
</head>
from django.contrib.auth.models import User
Это ОЧЕНЬ плохая практика. Не делайте так. Модель User это не абстрактная модель.class CustomUser(AbstractBaseUser, PermissionsMixin):
# some fields
# some methods
class Client(models.Model):
user = models.ForeignKey("CustomUser", on_delete=models.CASCADE)