Skip to main content

Demiansoft template(shared_lib)

Project description

shared_lib_ds

demiansoft 홈페이지 템플릿의 공통라이브러리 모음

설치

  1. pip를 이용해서 앱 설치
    pip install shared_lib_ds
    
  2. 프로젝트 settings.py에 앱 등록
    import os
    
    INSTALLED_APPS = [
    "jazzmin", # 관리자 페이지 UI
    'django.contrib.admin',
    ...,
    'shared_lib',
    'markdownx', # 블로그 마크다운에디터
    'hitcount', # 블로그 히트카운터
    'taggit', # 블로그 태그관리
    ...
    ]
    
    # 모델에서 이미지 저장을 위해
    MEDIA_URL = '/media/'
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
    
    STATIC_URL = '/static/'
    STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
    
    # 장고 어드민페이지 커스터마이징
    from _data import shared_lib
    JAZZMIN_SETTINGS = shared_lib.JAZZMIN_SETTINGS
    MARKDOWNX_MARKDOWN_EXTENSIONS = shared_lib.MARKDOWNX_MARKDOWN_EXTENSIONS
    MARKDOWNX_MARKDOWN_EXTENSION_CONFIGS = shared_lib.MARKDOWNX_MARKDOWN_EXTENSION_CONFIGS
    MARKDOWNX_UPLOAD_MAX_SIZE = shared_lib.MARKDOWNX_UPLOAD_MAX_SIZE
    MARKDOWNX_UPLOAD_CONTENT_TYPES = shared_lib.MARKDOWNX_UPLOAD_CONTENT_TYPES
    MARKDOWNX_IMAGE_MAX_SIZE = shared_lib.MARKDOWNX_IMAGE_MAX_SIZE
    
  3. 프로젝트 urls.py에 다음을 추가한다.
    from django.urls import path, include
    from shared_lib import utils
    
    urlpatterns = [
    # robots.txt는 반드시 가장 먼저
    path('robots.txt', utils.robots),
    # 기존 URL 패턴들...
    path('markdownx/', include('markdownx.urls')),
    ]
    
    # 개발 환경에서 미디어 파일 서빙
    from django.conf import settings
    from django.conf.urls.static import static
    
    if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    
  4. 프로젝트에 media/폴더를 생성하고 default_modal.bg.webp를 넣어 모달 기본배경으로 사용한다.
  5. 모델 마이그레이션 생성(모달, 캘린더, 포트폴리오, 블로그 모델 설치)
    python manage.py makemigrations shared_lib
    
  6. 마이그레이션 적용
    python manage.py migrate
    
  7. _data/shared_lib.py에 데이터 준비

사용법

< robots.txt >

위의 프로젝트 urls.py 내용만 추가하면 사용가능

< 구글과 네이버 애널리틱스 지원 >

  1. 프로젝트 최상위 _/data/shared_lib.py에 데이터 준비

  2. 원하는 앱의 template 파일에 다음을 추가

    {% load shared_tags %}
    {% analytics %}
    

< 모달창 & 캘린더 띄우기 >

모달창은 총 4가지 타입, 캘린더 1타입이 있음

  1. 관리자 페이지에서 타입별 모달창 생성후 활성화
  2. 원하는 앱의 template 파일에 다음을 추가
    {% load shared_tags %}
    {% show_modal %}
    {% show_calendar %}
    

< 포트폴리오 details 기능 >

  1. 앱에 포트폴리오 태그를 생성해서 portfolio_detail에 연결되도록 생성
    from django import template
    from shared_lib.models import  PortfolioCategory, Portfolio
    
    register = template.Library()
    
    @register.inclusion_tag("app/portfolio.html")
    def portfolio(title, subtitle):
        categories = PortfolioCategory.objects.all()
        items = Portfolio.objects.all()
        context = {
            'categories': categories,
            'items': items,
            'title': title,
            'subtitle': subtitle,
        }
        return context
    
  2. 앱의 views.py에 portfolio_detail 뷰함수 래핑
    from shared_lib.utils import portfolio_details
    def app_portfolio_details(request, pk):
        return portfolio_details(request, 'app/portfolio_details.html', 'Portfolio Details', pk)
    
  3. 앱의 urls.py에 portfolio_detail 연결
    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('portfolio_details/<int:pk>/', views.app_portfolio_details, name='portfolio_details')
    ]
    
  4. porfolio_details html 작성

< 블로그 기능 >

  1. 앱에 최근 블로그 보여주기 태그를 생성해서 blog_detail에 연결되도록 생성

    from shared_lib.models import BlogPost
    from django import template
    
    register = template.Library()
    
    @register.inclusion_tag("app/recent-blog-posts.html")
    def recent_blog_posts(title, subtitle, top_n):
       posts = BlogPost.objects.filter(status=1).filter(remarkable=True).order_by('-updated_on')
       context = {
           'title': title,
           'subtitle': subtitle,
           'top_n': posts[:top_n],
       }
       return context
    
  2. 최근 블로그 보여주는 템플릿 html 추가

  3. 앱의 views.py에 블로그 뷰클래스 래핑

    from shared_lib.utils import BlogListView, BlogDetailView, BlogCategoryListView, BlogSearchWordListView, BlogTagListView
    class AppBlogListView(BlogListView):
        template_name = "app/_test_blog_list.html"
    
    class AppBlogDetailView(BlogDetailView):
        template_name = "app/_test_blog_detail.html"
    
    class AppBlogCategoryListView(BlogCategoryListView):
        template_name = "app/_test_blog_list.html"
    
    class AppBlogSearchWordListView(BlogSearchWordListView):
        template_name = "app/_test_blog_list.html"
    
    class AppBlogTagListView(BlogTagListView):
        template_name = "app/_test_blog_list.html"
    
  4. 앱의 urls.py에 뷰클래스 연결

    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('blog_list/', views.AppBlogListView.as_view(), name='blog_list'),
        path('blog_details/<slug>', views.AppBlogDetailView.as_view(), name='blog_details'),
        path('blog_category/<str:category_filter>', views.AppBlogCategoryListView.as_view(), name='blog_category'),
        path('blog_search_word/', views.AppBlogSearchWordListView.as_view(), name='blog_search_word'),
        path('blog_tag/<str:tag>', views.AppBlogTagListView.as_view(), name='blog_tag'),
    ]
    
  5. 템플릿에서 markdown 사용하기 세팅

    {% load shared_tags %}
    <p>{{ item.formatted_markdown | add_img_class | safe }}</p>
    
  6. 블로그 템플릿에서 사이드바 사용하기

    {% load shared_tags %}
    {% sidebar 'app/_sidebar.html' %}
    

< 블로그, 포트폴리오 사이트맵 지원 >

  1. 앱의 urls.py에 다음을 추가한다.
    from shared_lib.sitemaps import BlogPostSitemap, PortfolioSitemap
    
    sitemaps = {
    "posts": BlogPostSitemap,
    "portfolios": PortfolioSitemap,
    }
    
    urlpatterns = [
     ...
    ]
    

< terms & privacy 지원>

  1. 앱의 views.py에 terms & privacy 뷰함수 래핑
    from shared_lib.utils import terms, privacy
    def app_terms(request):
        return terms(request, 'app/terms.html', "회사명", '2024-10-10')
    
    def app_privacy(request):
        return privacy(request, 'app/pricacy.html', "가락삼성치과", 
                   '2024-10-10', '김형진', '02-431-2804', 'hj3415@gmail.com' )
    
  2. 앱의 urls.py에 terms & privacy 연결
    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('terms_of_use/', views.app_terms, name='terms'),
        path('privacy_policy/', views.app_privacy, name='privacy'),
    ]
    

< Appointment Form 뷰함수 지원 >

  1. 앱의 views.py home 뷰함수 래핑
    from shared_lib.utils import home
    def app_home(request):
        return home(request,'shared_lib/test/_home.html', 'email@email.com', {})
    
  2. 앱의 urls.py 에 home 연결

< seo section 지원 >

  1. 앱의 index.html 에 seo html inclusion
    {% load shared_tags %}
    {% include 'shared_lib/seo.html' with template_name='app_name' %}
    

< 테스트 페이지 접속하려면 >

http://127.0.0.1:8000/shared_lib/ 로 접속하면 shared_lib 기능을 알수있는 테스트 페이지 접속 이를 위해서 프로젝트의 urls.py에 다음을 추가

from django.urls import path, include

urlpatterns = [
    path('shared_lib/', include('shared_lib.urls', namespace='shared_lib')),
    ...
]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

shared_lib_ds-1.2.7.tar.gz (494.1 kB view details)

Uploaded Source

Built Distribution

shared_lib_ds-1.2.7-py3-none-any.whl (598.5 kB view details)

Uploaded Python 3

File details

Details for the file shared_lib_ds-1.2.7.tar.gz.

File metadata

  • Download URL: shared_lib_ds-1.2.7.tar.gz
  • Upload date:
  • Size: 494.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.32.3

File hashes

Hashes for shared_lib_ds-1.2.7.tar.gz
Algorithm Hash digest
SHA256 ccfaf8929a0b239aea27009e44643ca99ea0676bd3d7196485cfa11b478543f6
MD5 16cc4d69e7f9ea190b07253c57437e31
BLAKE2b-256 87736bf6961fd08eb4fc1cc069624910e8795fba9078e7206b13b9883848f5ff

See more details on using hashes here.

File details

Details for the file shared_lib_ds-1.2.7-py3-none-any.whl.

File metadata

File hashes

Hashes for shared_lib_ds-1.2.7-py3-none-any.whl
Algorithm Hash digest
SHA256 0fa7a59803af31fabf8a99ea2801cab55760c40bca5dbe5b99aefd667723881c
MD5 0058752d84988b28e23c6888792d154d
BLAKE2b-256 21997a799f0d1f33ce5e333d920eb880a00c204f93fad66c06966d8b52d68555

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page