My First Django Blog Project. Part 2.

sksksk(56)
Published in
#tech
Words
62
Reading
1 min
4y
Listen to this post
~1 min

Hey guys, I am learning Django and after learning all the basics and some advanced topics, I started to develop projects. Here is my first Django blog project.


Source

Codes Under "my_blog_project/App_Login/admin.py" file

from django.contrib import admin
from App_Login.models import UserProfile
# Register your models here.

admin.site.register(UserProfile)

Codes Under "my_blog_project/App_Login/apps.py" file

from django.apps import AppConfig


class AppLoginConfig(AppConfig):
    name = 'App_Login'

Codes Under "my_blog_project/App_Login/forms.py" file

from django import forms
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from django.contrib.auth.models import User
from App_Login.models import UserProfile

class SignUpForm(UserCreationForm):
    email = forms.EmailField(required=True)
    class Meta:
        model = User
        fields = ('username','email','password1','password2')


class ProfileUpdateForm(UserChangeForm):
    class Meta:
        model = User
        fields = ('username','email','first_name','last_name')


class ProfilePic(forms.ModelForm):
    class Meta:
        model = UserProfile
        fields = ('profile_pic',)

Codes Under "my_blog_project/App_Login/models.py" file

from django.db import models
from django.contrib.auth.models import User


# Create your models here.

class UserProfile(models.Model):
    user = models.OneToOneField(User, related_name = 'user_profile',on_delete = models.CASCADE)
    profile_pic = models.ImageField(upload_to = 'profile_pics')

Codes Under "my_blog_project/App_Login/urls.py" file


from django.urls import path,include
from . import views

app_name = 'App_Login'

urlpatterns = [
    path('sign_up/',views.sign_up,name = 'sign_up'),
    path('login/',views.login_page,name = 'login_page'),
    path('logout/',views.logout_page,name = 'logout_page'),
    path('profile/',views.profile, name = 'profile'),
    path('update_profile/',views.update_profile,name = 'update_profile'),
    path('password/',views.password_change, name='password_change'),
    path('add_pro_pic/',views.add_pro_pic,name='add_pro_pic'),
    path('change_pro_pic/',views.change_pro_pic, name='change_pro_pic'),
]

Codes Under "my_blog_project/App_Login/views.py" file

from django.shortcuts import render
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm, PasswordChangeForm
from django.contrib.auth import login,authenticate,logout
from django.shortcuts import HttpResponseRedirect
from django.urls import reverse
from django.contrib.auth.decorators import login_required
from App_Login.forms import SignUpForm, ProfileUpdateForm,ProfilePic

# Create your views here.

def sign_up(request):
    form = SignUpForm()
    registered = False
    if request.method == 'POST':
        form = SignUpForm(data=request.POST)
        if form.is_valid():
            form.save()
            registered = True

    diction = {'form':form,'registered':registered}
    return render(request,'App_Login/sign_up.html',context = diction)


def login_page(request):
    form = AuthenticationForm()
    if request.method == 'POST':
        form = AuthenticationForm(data=request.POST)
        if form.is_valid():
            username = form.cleaned_data.get('username')
            password = form.cleaned_data.get('password')

            user = authenticate(username=username,password=password)

            if user is not None:
                login(request,user)
                return HttpResponseRedirect(reverse('index'))
    diction = {'form':form}
    return render(request,'App_Login/login.html',context=diction)


@login_required
def logout_page(request):
    logout(request)
    return HttpResponseRedirect(reverse('index'))


@login_required
def profile(request):
    diction = {}
    return render(request,'App_Login/profile.html',context = diction)


@login_required
def update_profile(request):
    current_user = request.user
    form = ProfileUpdateForm(instance = current_user)

    if request.method == 'POST':
        form = ProfileUpdateForm(data = request.POST, instance = current_user)

        if form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse('App_Login:profile'))
    diction = {'form':form}
    return render(request,'App_Login/update_profile.html',context=diction)


@login_required
def password_change(request):
    changed = False
    current_user = request.user
    form = PasswordChangeForm(current_user)
    if request.method == 'POST':
        form = PasswordChangeForm(current_user,data=request.POST)

        if form.is_valid():
            form.save()
            changed = True


    return render(request,'App_Login/password_change.html',context={'form':form,'changed':changed})



@login_required
def add_pro_pic(request):
    form = ProfilePic()
    if request.method == 'POST':
        form = ProfilePic(request.POST, request.FILES)
        if form.is_valid():
            user_obj = form.save(commit = False)
            user_obj.user = request.user
            user_obj.save()
            return HttpResponseRedirect(reverse('App_Login:profile'))
    return render(request,'App_Login/add_pro_pic.html',context={'form':form})


@login_required
def change_pro_pic(request):
    form = ProfilePic(instance=request.user.user_profile)
    if request.method == 'POST':
        form = ProfilePic(request.POST, request.FILES, instance = request.user.user_profile)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse('App_Login:profile'))

    return render(request,'App_Login/add_pro_pic.html',context={'form':form})



To be continued...

My First Django Blog Project. Part 2. | Ecency