ترفندهای برنامه‌نویسی
164 subscribers
27 photos
3 videos
22 files
615 links
Download Telegram
با سلام خدمت همه‌ی دوستانی که عضو میشن
در این کانال سعی میکنم از تجربیات خودم و همه‌ی بزرگوارانی که لطف میکنن و مطالب مفید خودشون رو در اختیار میذارن پست‌هایی بنویسم که هم برای خودم یه مرجع بسازم و هم برای شما دوستان
با ارسال نظرات و اصلاح موارد اشتباه یا ناقص به همه‌ی اعضا کمک خواهید کرد.
سپاس
@programming_tricks
base_site.html
1.6 KB
#ترجمه‌ی‌صفحه‌ادمین
برای اینکه یه دکمه توی پنل ادمین جنگو باشه که بشه اونجا تغییر زبان داشته باشیم، یه راهش اکستند کردن فایل بیس اچ‌تی‌ام‌ال ادمین هست، به این روش:
اول توی پوشه‌ی templates یه پوشه به اسم admin میسازید و فایل زیر رو داخلش قرار میدین و تمام.
(با جاوااسکریپت خالی نوشته شده روی همه مرورگرها کار میکنه).
*چندتا چیز اضافی هم داخل این فایل هست.
اضافه کردن favico یا همون آیکون کوچولو کنار اسم سایت توی تب مرورگر.
اگر استایل راست به چپ داشته باشین کافیه آدرسی که توی شرط LANGUAGE_BIDI هست رو اصلاح کنید.
آدرس فایلهای لازم برای CKEditor رو هم گذاشتم.
@programming_tricks
base.html
1.8 KB
توی جنگو برای کدنویسی کمتر میتونیم یه فایل اچ‌تی‌ام‌ال extend کنیم.
میدونید که هر صفحه اچ‌تی‌ام‌ال باید شامل تگ‌های html, header, body باشه و همین‌طور استایل‌ها و جاوااسکریپت های زیادی ممکنه بین چندتا صفحه مشترک باشه.
خب توی جنگو با استفاده از blockها و البته extends میشه یه فایل که معمولا بهش میگن base نوشت، و از اون همه کد تکراری جلوگیری کرد.
@programming_tricks
list.html
1.3 KB
اینجا بیس رو اکستند کرده
@programming_tricks
alert.html
839 B
یکی از کامپوننت‌های جالب که استفاده کردنش به زیبایی کار اضافه میکنه همین فایل هست.
با استفاده از کتابخانه messages خود جنگو میشه پیغامهایی برای یوزر ارسال کرد، این فایل برای نمایش اون پیامها در تمپلیت استفاده میشه.
نکته‌ای دیگه‌ش استفاده از include هست. این فایل توی base.html اسمش include شده.
@programming_tricks
pagination.html
4.6 KB
از دیگر کامپوننت های اچ‌تی‌ام‌الی که میشه یبار نوشت، ولی چندین بار توی فایلها و صفحات مختلف ازش استفاده کرد، pagination هست.
این فایلی که اینجا هست، بر اساس همون توضیحات داکیومنت جنگو هست ولی با یک فرق بسیار مهم!
اونیکه توی داک جنگو هست، برای همه‌ی صفحات شماره میذاره که یعنی اگر ۱۰۰ تا هم بشه، همه‌ی از یک تا صد رو براش دکمه میذاره و صفحه‌ی شما زشت میشه.
ولی اینجا این فایل آماده شده تا صفحه اول، آخر و چندتا شماره نسبت به صفحه‌ی فعلی که یوزر میبینه رو نمایش بده.
@programming_tricks
سلام به شما

https://django-simple-captcha.readthedocs.io/en/latest/usage.html
یه پکیج جالب پیدا کردم، کارش اینه که captcha درست کنه.
برای لاگین فرم پنل ادمین هم اضافه‌ش کردم، به این صورت:
توی admin.py یه اپ که ساختم برای کاستوم کردن مدل یوزر(که بعدا این رو هم یک متنی راجع بهش مینویسم). این ها رو اضافه کردم.
ولی شما میتونید توی admin.py هر اپ دیگری هم اینکار رو بکنید.

admin.autodiscover()
admin.site.login = custom_views.CustomLoginView.as_view()

اینجا custom_views یه فایل views هست توی یه اپ که داخلش این کلاس قرار داره:

from django.contrib.auth.views import LoginView
from django.contrib.messages.views import SuccessMessageMixin

from . import forms


class CustomLoginView(SuccessMessageMixin, LoginView):
template_name = 'admin/login-1.html'
success_message = ('خوش آمدید، ورود شما موفقیت آمیز بود.')
authentication_form = forms.CustomLoginForm

def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["username"] = self.request.user.username
return context

اون فرم هم این بوده:

from captcha.fields import CaptchaField
from django.contrib.auth.forms import AuthenticationForm


class CustomLoginForm(AuthenticationForm):
captcha = CaptchaField()

خب بعدش باید تمپلیت مورد نیاز رو هم درست کنیم. من فقط از تمپلیت جنگو یه کپی گرفتم و اسمش رو عوض کردم و داخلش هم این چندخط به بالای دکمه ثبت، اضافه کردم:

<div class="form-row">
{{ form.captcha.errors }}
{{ form.captcha.label_tag }}
{{ form.captcha }}
</div>

به همین آسونی میشه صفحه لاگین پنل ادمین رو دستکاری کرد و البته یه کپچای کوچیک هم بهش اضافه کرد.
@programming_tricks