class PageHit(models.Model):
url = models.CharField(unique=True)
count = models.PositiveIntegerField(default=0)
from functools import wraps
from django.db.models import F
from django.db import transaction
def counted(f):
@wraps(f)
def decorator(request, *args, **kwargs):
with transaction.atomic():
counter, created = PageHit.objects.get_or_create(url=request.path)
counter.count = F('count') + 1
counter.save()
return f(request, *args, **kwargs)
return decorator
from .decorators import counted
@counted
def some_view(request):
...
if ($model->load(Yii::$app->request->post()))
Yii::$app->getResponse()->redirect('/news');
return $this->redirect('/news')
if ($news = $model->create()) {
if ($model->save()) {
// и получить id
$model->id;
(new DateTime())->format('Y-m-d H:i:s');
public function create()
{
if (!$this->validate()) {
return null;
}
$news = new News();
$news->create_at = $this->create_at;
$news->status = 'archive';
var_dump($news);die;
return $news->save() ? $news : null;
}
public function actionCreate(){
$model = new NewsForm();
$model->create_at = (new DateTime())->format('Y-m-d H:i:s');
$model->update_at = (new DateTime())->format('Y-m-d H:i:s');
if ($news = $model->create()) {
echo 'УРА! Запись' . $news->id . 'была успешно добавлена';
}
}
def redirect_if_authenticated(view_func):
@wraps(view_func)
def dispatch_wrapper(self, request, *args, **kwargs):
if request.user.is_athenticated:
return redirect('default')
return view_func(self, request, *args, **kwargs)
return dispatch_wrapper
from django import template
from django.utils.html import conditional_escape
from django.utils.safestring import mark_safe
register = template.Library()
@register.filter(needs_autoescape=True)
def initial_letter_filter(text, autoescape=True):
first, other = text[0], text[1:]
if autoescape:
esc = conditional_escape
else:
esc = lambda x: x
result = '<strong>%s</strong>%s' % (esc(first), esc(other))
return mark_safe(result)
# остальные импорты опущены
from django.conf import settings
class Article(models.Model):
...
added_by = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True,
related_name="articles_added")
last_edited_by = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True,
related_name="articles_edited")
...
from django.contrib import admin
from .models import Article
class ArticleAdmin(admin.ModelAdmin):
readonly_fields = ("last_edited_by",) # делаем полем рид онли, чтобы нельзя было его отредактировать
def save_model(self, request, obj, form, change):
if change: # True если изменяется уже существующий объект, False если добавляется новый
# определяем и записываем пользователя если изменяется существующий объект
obj.last_edited_by = request.user
else:
# определяем и записываем пользователя если добавляется новый объект
obj.added_by = request.user
super(ArticleAdmin, self).save_model(request, obj, form, change)
admin.site.register(Article, ArticleAdmin)
<?= Html::a('Название раздела', ['billing/view', 'client_id' => $clientId], ['class' => 'list-group-item' . (Yii::$app->request->pathInfo == 'billing/view' ? ' active' : '')]) ?>
$this->context instanceof \admin\controllers\DeviceController ? ' active' : ''
Возможно ли изучить PHP-фреймворк параллельно разрабатывая на нём проект?Честно говоря, не представляю, как ещё по другому можно изучать фреймворк, в т.ч. PHP.
плюс ко всему проект должен быть приспособлен к highload.Тогда с выбором фреймворка, нужно быть поосторожнее. "Не все фломастеры одинаково вкусные".
микросервисы, которые обходились без больших фреймворков даже при основательных нагрузкахЧистый PHP-код, работает быстрее чем любой фреймворк. Я имею в виду, грамотно написанный PHP-код, т.к. в нем отсутствует "лишняя" логика.
Хочу использовать для разработки фреймворк Yii2. В чём вопрос: смогу ли я параллельно его изучая приступить к разработкеСкорее всего да, хотя это очень индивидуально.
и так, чтобы потом 10 раз не пришлось переделывать?Скорее всего нет, хотя это тоже очень индивидуально.
Может, изучить какой-нибудь микрофреймворк?Возможно. Зависит от Ваших задач и целей.
Понятное дело, что без правильно настроенного содержимого моей черепной коробки даже с 10-ти летним опытом в Yii не получится, но всё же, поделитесь опытом и дайте совет :)Ну я обычно с новичками, изучение с CodeIgniter'а начинаю, т.к. он не изобилует всеми новыми фишками и плюшками, и в виду отсутствия таких, казалось бы, ставшими уже стандартом вещей, как например "авторизация" - заставляет их включать голову, а не истерично рыться в поисковике на тему "как включить готовую авторизацию", но мне не редко приходиться работать с людьми, которые не очень хорошо разбираются в PHP, Фреймворках и программировании в целом или веб-разработке в целом. Не многие сходу знают, что такое MVC и так далее, а пытаться объяснить человеку, что такое класс и тут же нагружать его "пространствами имён" или "внедрением зависимостей" (и всем остальным) - не очень продуктивно (как показывает практика). Когда у обучаемого 10 лет опыта за спиной, можно сразу с Laravel/Symfony начинать, как минимум, что такое MVC и всё остальное - объяснять редко приходится, скорее, приходится показывать, "как это сделать тут", а "как надо делать вообще" - обучаемый уже и без меня отлично знает.
1) С# или Visual C#?
2) Что такое платформа .NET Framework?
3) Недавно прочитал про .NET CORE.