Djanco Concepts
Djanco Concepts
Model-View-Template (MVT):
Models: Define the data structure of your application (like tables in a database).
Views: Handle user requests, process data, and determine what response to send.
Templates: Define the presentation layer using HTML and Django templating language
for dynamic content.
2. URLs:
Built-in system for user registration, login, logout, and permission management.
Allows secure access to specific functionalities.
5. Class-based Views:
Intercepts requests and responses, allowing for functionality like user session
management or security checks.
8. Signals:
Manage static files like CSS, JavaScript, and images separately from your
application code.
Media files like user uploads are stored and served differently from static files.
10. Caching:
Django provides a testing framework for writing unit tests and ensuring code
functionality.
12. Third-party Packages:
A vast ecosystem of reusable Django apps and libraries extends functionality for
various needs.
13. Security:
Django prioritizes security and offers features like user authentication, CSRF
protection, and XSS prevention.
14. Scalability:
Django can handle small to large-scale web applications due to its clean
architecture and design choices.
15. Deployment:
Python
from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login, logout
from .models import Article, Comment
from .forms import ArticleForm, CommentForm
def article_list(request):
articles = Article.objects.all().order_by('-created_date')
return render(request, 'articles/list.html', {'articles': articles})
if request.method == 'POST':
form = CommentForm(request.POST)
if form.is_valid():
comment = form.save(commit=False)
comment.article = article
comment.save()
return redirect('article_detail', slug=slug)
else:
form = CommentForm()
def article_create(request):
if request.user.is_authenticated:
if request.method == 'POST':
form = ArticleForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('article_list')
else:
form = ArticleForm()
return render(request, 'articles/create.html', {'form': form})
else:
return redirect('login')
def login_view(request):
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return redirect('article_list')
else:
# Login failed logic
pass
return render(request, 'registration/login.html')
def logout_view(request):
logout(request)
return redirect('article_list')
Use code with caution.
This example showcases several Django concepts:
Sources
github.com/2000jedi/SAM-django
github.com/AzizbekRakhimov5555/django_project_2
stackoverflow.com/questions/39560120/comments-not-showing-in-post-detail-view
stackoverflow.com/questions/62360349/django-comments-newbie
github.com/LimpingCoronation/blog-django3
github.com/sahin88/Django_Html_Css_Js_BootStrap_SocialMediaApp_FullStack
github.com/Astatham98/lovejoy
morioh.com/p/32261b784564
profile picture
more large!
3
+
10
11
12
13
Absolutely, here's a more comprehensive Django concept exceeding 100 lines,
incorporating various functionalities and best practices:
Python code examples
def search_articles(request):
query = request.GET.get('q')
if query:
articles = Article.objects.filter(
Q(title__icontains=query) | Q(content__icontains=query)
).order_by('-created_date')
else:
articles = Article.objects.all().order_by('-created_date')
return render(request, 'articles/search.html', {'articles': articles})
class ArticleListView(ListView):
model = Article
paginate_by = 5 # Display 5 articles per page
template_name = 'articles/list.html'
class ArticleDetailView(DetailView):
model = Article
@login_required
def add_comment(request, slug):
article = get_object_or_404(Article, slug=slug)
if request.method == 'POST':
form = CommentForm(request.POST)
if form.is_valid():
comment = form.save(commit=False)
comment.article = article
comment.user = request.user
comment.save()
return redirect('article_detail', slug=slug)
else:
form = CommentForm()
return render(request, 'articles/comment_form.html', {'form': form})
@login_required
def create_article(request):
if request.method == 'POST':
form = ArticleForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('article_list')
else:
form = ArticleForm()
return render(request, 'articles/create.html', {'form': form})
@staff_member_required
def update_article(request, slug):
article = get_object_or_404(Article, slug=slug)
if request.method == 'POST':
form = ArticleForm(request.POST, request.FILES, instance=article)
if form.is_valid():
form.save()
return redirect('article_list')
else:
form = ArticleForm(instance=article)
return render(request, 'articles/create.html', {'form': form})
@staff_member_required
def delete_article(request, slug):
article = get_object_or_404(Article, slug=slug)
if request.method == 'POST':
article.delete()
return redirect('article_list')
return render(request, 'articles/delete.html', {'article': article})
def user_registration(request):
if request.method == 'POST':
form = UserRegistrationForm(request.POST)
if form.is_valid():
user = form.save()
login(request, user)
return redirect('article_list')
else:
form = UserRegistrationForm()
return render(request, 'registration/register.html', {'form': form})