diff --git a/django_project/django_project/urls.py b/django_project/django_project/urls.py
index 5702f0f11a63a9edfdf6d78296591165ff802c65..ae506df4ca0b4fbc500750cb0b75fe57fb4d3cdc 100644
--- a/django_project/django_project/urls.py
+++ b/django_project/django_project/urls.py
@@ -16,24 +16,30 @@ Including another URLconf
 """
 from django.contrib import admin
 from django.urls import path, include
-from myapp import views
 from django.conf import settings
 from django.conf.urls.static import static
 
+from myapp.views.authviews import login_view, logout_view
+from myapp.views.userviews import register_view, account_view, delete_account_view
+from myapp.views.groupviews import group_list_view, group_create_view, group_update_view, group_delete_view, group_detail_view
+from myapp.views.postviews import create_post_view, feed_view
+from myapp.views.initview import init_db_view
+
+
 urlpatterns = [
     path('admin/', admin.site.urls),
-    path('register/', views.register_view, name='register'),
-    path('', views.login_view, name='login'), # default view
-    path('account/', views.account_view, name='account'),
-    path('delete/', views.delete_account_view, name='delete_account'),
-    path('logout/', views.logout_view, name='logout'),
-    path('groups/', views.group_list_view, name='group_list'),
-    path('groups/create/', views.group_create_view, name='group_create'),
-    path('groups/<int:group_id>/update/', views.group_update_view, name='group_update'),
-    path('groups/<int:group_id>/delete/', views.group_delete_view, name='group_delete'),
-    path('groups/<int:group_id>/', views.group_detail_view, name='group_detail'),
-    path('post/create/', views.create_post_view, name='create_post'),
-    path('feed/', views.feed_view, name='feed'),
+    path('register/', register_view, name='register'),
+    path('', login_view, name='login'), # default view
+    path('account/', account_view, name='account'),
+    path('delete/', delete_account_view, name='delete_account'),
+    path('logout/', logout_view, name='logout'),
+    path('groups/', group_list_view, name='group_list'),
+    path('groups/create/', group_create_view, name='group_create'),
+    path('groups/<int:group_id>/update/', group_update_view, name='group_update'),
+    path('groups/<int:group_id>/delete/', group_delete_view, name='group_delete'),
+    path('groups/<int:group_id>/', group_detail_view, name='group_detail'),
+    path('post/create/', create_post_view, name='create_post'),
+    path('feed/', feed_view, name='feed'),
 ]
 
 if settings.DEBUG:
diff --git a/django_project/myapp/views.py b/django_project/myapp/views.py
deleted file mode 100644
index a3353c6643c6b4e9e9a601b51216c5a8486eb953..0000000000000000000000000000000000000000
--- a/django_project/myapp/views.py
+++ /dev/null
@@ -1,372 +0,0 @@
-from django.shortcuts import render, redirect
-from django.http import JsonResponse
-from django.conf import settings
-import time
-import os
-import rust_crud_api  # Custom Rust Pyo3 Library 🦀
-
-# Dont delete this 
-db_url = settings.DATABASE_URL
-
-
-
-def init_db_view(request):
-    db_url = os.environ.get("DATABASE_URL")
-    try:
-        rust_crud_api.init_db(db_url)
-        return JsonResponse({"message": "Database initialized"})
-    except Exception as e:
-        return JsonResponse({"error": str(e)}, status=500)
-
-def register_view(request):
-    """
-    Handles user registration. Expects POST with
-    'name', 'email', 'password', 'username', 'studentid', 'startyear', 'endyear',
-    and optionally 'profilepicture'.
-    """
-    db_url = settings.DATABASE_URL  # Make sure DATABASE_URL is defined in your Django settings
-    context = {}
-
-    if request.method == 'POST':
-        name = request.POST.get('name', '').strip()
-        email = request.POST.get('email', '').strip()
-        password = request.POST.get('password', '').strip()
-        username = request.POST.get('username', '').strip()
-        studentid_str = request.POST.get('studentid', '').strip()
-        startyear_str = request.POST.get('startyear', '').strip()
-        endyear_str = request.POST.get('endyear', '').strip()
-
-        # 1. Check required fields
-        if not all([name, email, password, username, studentid_str, startyear_str, endyear_str]):
-            context['error'] = (
-                "Name, email, username, student ID, start year, and end year are required."
-            )
-            return render(request, 'myapp/register.html', context)
-
-        # 2. Try converting studentid, startyear, endyear to int
-        try:
-            studentid = int(studentid_str)
-        except ValueError:
-            context['error'] = "Student ID must be a number."
-            return render(request, 'myapp/register.html', context)
-
-        try:
-            startyear = int(startyear_str)
-        except ValueError:
-            context['error'] = "Start year must be a number."
-            return render(request, 'myapp/register.html', context)
-
-        try:
-            endyear = int(endyear_str)
-        except ValueError:
-            context['error'] = "End year must be a number."
-            return render(request, 'myapp/register.html', context)
-
-        # 3. Handle profile picture upload (if any)
-        profilepicture_file = request.FILES.get('profilepicture')
-        saved_path = None  # Default to None if no file is uploaded
-
-        if profilepicture_file:
-            # Make sure your form <input> matches name="profilepicture"
-            filename = profilepicture_file.name
-
-            # Decide a directory inside MEDIA_ROOT for profile pics
-            profile_dir = os.path.join(settings.MEDIA_ROOT, 'profile_pics')
-            os.makedirs(profile_dir, exist_ok=True)  # Ensure the folder exists
-
-            # Build the full filesystem path where we’ll store the file
-            save_path = os.path.join(profile_dir, filename)
-
-            # Write the file to disk in chunks
-            with open(save_path, 'wb+') as destination:
-                for chunk in profilepicture_file.chunks():
-                    destination.write(chunk)
-
-            # The path we'll store in the DB (so we can serve it at /media/profile_pics/<filename>)
-            saved_path = f"/media/profile_pics/{filename}"
-
-        # Debug prints to confirm we have the file and path
-        print("DEBUG: profilepicture_file is:", profilepicture_file)
-        print("DEBUG: saved_path is:", saved_path)
-
-        # 4. Call Rust to create the user
-        try:
-            rust_crud_api.create_user(
-                db_url,
-                name,
-                email,
-                password,
-                username,
-                studentid,
-                startyear,
-                endyear,
-                saved_path
-            )
-            # 5. After successful registration, redirect to login or some other page
-            return redirect('login')
-        except Exception as e:
-            context['error'] = f"An error occurred: {str(e)}"
-            return render(request, 'myapp/register.html', context)
-    
-    # If GET or anything else, just render the registration form
-    return render(request, 'myapp/register.html', context)
-
-def login_view(request):
-    """
-    Handles user login by verifying credentials using the Rust extension.
-    If valid, stores user details in the session and redirects to the account page.
-    """
-    db_url = settings.DATABASE_URL
-    context = {}
-    
-    if request.method == 'POST':
-        email = request.POST.get('email', '').strip()
-        password = request.POST.get('password', '').strip()
-        
-        if not email or not password:
-            context['error'] = "Email and password are required."
-            return render(request, 'myapp/login.html', context)
-        
-        try:
-            # Verify the user's credentials using the Rust extension.
-            is_valid = rust_crud_api.verify_user(db_url, email, password)
-            if not is_valid:
-                context['error'] = "Invalid email or password."
-                return render(request, 'myapp/login.html', context)
-            
-            # Retrieve the user record to store additional info in session.
-            # (For simplicity, we retrieve all users and select the matching one.)
-            users = rust_crud_api.get_all_users(db_url)
-            user = next((u for u in users if u.email.lower() == email.lower()), None)
-            if not user:
-                context['error'] = "User not found."
-                return render(request, 'myapp/login.html', context)
-            
-            # Store user information in the session.
-            request.session['user_id'] = user.id
-            request.session['user_name'] = user.name
-            request.session['user_email'] = user.email
-            
-            return redirect('feed')
-        except Exception as e:
-            context['error'] = f"An error occurred: {str(e)}"
-            return render(request, 'myapp/login.html', context)
-    
-    return render(request, 'myapp/login.html', context)
-
-def account_view(request):
-    """
-    Display the account page for the logged-in user.
-    """
-    user_id = request.session.get('user_id')
-    if not user_id:
-        return redirect('login')
-    db_url = settings.DATABASE_URL
-    try:
-        user = rust_crud_api.get_user(db_url, int(user_id))
-        if user is None:
-            return JsonResponse({'error': 'User not found.'}, status=404)
-        return render(request, 'myapp/account.html', {'user': user})
-    except Exception as e:
-        return JsonResponse({'error': str(e)}, status=500)
-
-
-def delete_account_view(request):
-    """
-    Delete the account of the logged-in user.
-    """
-    user_id = request.session.get('user_id')
-    if not user_id:
-        return redirect('login')
-    db_url = settings.DATABASE_URL
-    if request.method == 'POST':
-        try:
-            success = rust_crud_api.delete_user(db_url, int(user_id))
-            if success:
-                request.session.flush()  # Clear the session after deletion.
-                return redirect('register')
-            else:
-                return JsonResponse({'error': 'Account deletion failed.'}, status=500)
-        except Exception as e:
-            return JsonResponse({'error': str(e)}, status=500)
-    return render(request, 'myapp/delete_account.html')
-
-def logout_view(request):
-    # Clear all session data to log out the user.
-    request.session.flush()
-    # Optionally, render a confirmation page or redirect to login.
-    return render(request, 'myapp/logout.html')
-
-def group_list_view(request):
-    """
-    List all groups.
-    """
-    db_url = settings.DATABASE_URL
-    context = {}
-    try:
-        groups = rust_crud_api.get_all_groups(db_url)
-        context['groups'] = groups
-    except Exception as e:
-        context['error'] = f"An error occurred: {e}"
-    return render(request, 'myapp/group_list.html', context)
-
-def group_create_view(request):
-    """
-    Create a new group.
-    """
-    db_url = settings.DATABASE_URL
-    context = {}
-    if request.method == 'POST':
-        group_name = request.POST.get('name', '').strip()
-        if not group_name:
-            context['error'] = "Group name is required."
-            return render(request, 'myapp/group_create.html', context)
-        try:
-            rust_crud_api.create_group(db_url, group_name)
-            return redirect('group_list')
-        except Exception as e:
-            context['error'] = f"An error occurred: {e}"
-            return render(request, 'myapp/group_create.html', context)
-    return render(request, 'myapp/group_create.html', context)
-
-def group_update_view(request, group_id):
-    """
-    Update an existing group's name.
-    """
-    db_url = settings.DATABASE_URL
-    context = {}
-    try:
-        group = rust_crud_api.get_group(db_url, int(group_id))
-        if group is None:
-            context['error'] = "Group not found."
-            return render(request, 'myapp/group_update.html', context)
-    except Exception as e:
-        context['error'] = f"Error retrieving group: {e}"
-        return render(request, 'myapp/group_update.html', context)
-    
-    if request.method == 'POST':
-        new_name = request.POST.get('name', '').strip()
-        if not new_name:
-            context['error'] = "New group name is required."
-            context['group'] = group
-            return render(request, 'myapp/group_update.html', context)
-        try:
-            # This assumes you've implemented an `update_group` function in your Rust library.
-            rust_crud_api.update_group(db_url, int(group_id), new_name)
-            return redirect('group_list')
-        except Exception as e:
-            context['error'] = f"Error updating group: {e}"
-            context['group'] = group
-            return render(request, 'myapp/group_update.html', context)
-    
-    context['group'] = group
-    return render(request, 'myapp/group_update.html', context)
-
-def group_delete_view(request, group_id):
-    """
-    Delete a group.
-    """
-    db_url = settings.DATABASE_URL
-    context = {}
-    if request.method == 'POST':
-        try:
-            # This assumes you have a `delete_group` function in your Rust library.
-            success = rust_crud_api.delete_group(db_url, int(group_id))
-            if success:
-                return redirect('group_list')
-            else:
-                context['error'] = "Deletion failed."
-        except Exception as e:
-            context['error'] = f"Error deleting group: {e}"
-    else:
-        try:
-            group = rust_crud_api.get_group(db_url, int(group_id))
-            context['group'] = group
-        except Exception as e:
-            context['error'] = f"Error retrieving group: {e}"
-    return render(request, 'myapp/group_delete.html', context)
-
-def group_detail_view(request, group_id):
-    """
-    Fetch a single group's details using the Rust extension and display them.
-    """
-    db_url = settings.DATABASE_URL
-    context = {}
-    try:
-        group = rust_crud_api.get_group(db_url, group_id)
-        if group is None:
-            return HttpResponseNotFound("Group not found.")
-        context['group'] = group
-    except Exception as e:
-        context['error'] = f"An error occurred: {e}"
-    return render(request, 'myapp/group_detail.html', context)
-
-'''def account_view(request):
-    """
-    Display the account page with user posts.
-    """
-    db_url = settings.DATABASE_URL
-    user_id = request.session.get('user_id')
-    if not user_id:
-        return redirect('login')
-    
-    try:
-        # Retrieve user info, e.g., using get_user (or session data)
-        users = rust_crud_api.get_all_users(db_url)
-        user = next((u for u in users if u.id == user_id), None)
-        # Retrieve posts for this user (public posts)
-        posts = rust_crud_api.get_user_posts(db_url, user_id)
-    except Exception as e:
-        return render(request, 'myapp/account.html', {'error': str(e)})
-    
-    return render(request, 'myapp/account.html', {'user': user, 'posts': posts})
-'''
-
-def create_post_view(request):
-    """
-    Allow a logged-in user to create a new post.
-    If a group is specified in the POST data, the post is associated with that group.
-    """
-    db_url = settings.DATABASE_URL
-    user_id = request.session.get('user_id')
-    if not user_id:
-        return redirect('login')
-    
-    context = {}
-    if request.method == 'POST':
-        content = request.POST.get('content', '').strip()
-        # Optionally, get a group_id if the post is for a group:
-        group_id = request.POST.get('group_id')
-        if group_id:
-            try:
-                group_id = int(group_id)
-            except ValueError:
-                group_id = None
-        else:
-            group_id = None
-        
-        if not content:
-            context['error'] = "Post content cannot be empty."
-            return render(request, 'myapp/create_post.html', context)
-        
-        try:
-            rust_crud_api.create_post(db_url, user_id, group_id, content)
-            return redirect('feed')
-        except Exception as e:
-            context['error'] = f"Error creating post: {str(e)}"
-    
-    return render(request, 'myapp/create_post.html', context)
-
-def feed_view(request):
-    """
-    Display a global feed of posts.
-    """
-    db_url = settings.DATABASE_URL
-    try:
-        posts = rust_crud_api.get_feed(db_url)
-    except Exception as e:
-        return render(request, 'myapp/feed.html', {'error': str(e)})
-    
-    return render(request, 'myapp/feed.html', {'posts': posts})
-
-
diff --git a/django_project/myapp/views/__init__.py b/django_project/myapp/views/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..5095669428c76fd5ae5b605be7bccccf51d60d26
--- /dev/null
+++ b/django_project/myapp/views/__init__.py
@@ -0,0 +1,6 @@
+from .authviews import *
+from .userviews import *
+from .groupviews import *
+from .postviews import *
+from .initview import *
+
diff --git a/django_project/myapp/views/authviews.py b/django_project/myapp/views/authviews.py
new file mode 100644
index 0000000000000000000000000000000000000000..cdc60849007b1663b11a47ce02fbdea72486f4df
--- /dev/null
+++ b/django_project/myapp/views/authviews.py
@@ -0,0 +1,57 @@
+from django.shortcuts import render, redirect
+from django.http import JsonResponse
+from django.conf import settings
+import time
+import os
+import rust_crud_api 
+
+db_url = settings.DATABASE_URL
+
+def login_view(request):
+    """
+    Handles user login by verifying credentials using the Rust extension.
+    If valid, stores user details in the session and redirects to the account page.
+    """
+    db_url = settings.DATABASE_URL
+    context = {}
+    
+    if request.method == 'POST':
+        email = request.POST.get('email', '').strip()
+        password = request.POST.get('password', '').strip()
+        
+        if not email or not password:
+            context['error'] = "Email and password are required."
+            return render(request, 'myapp/login.html', context)
+        
+        try:
+            # Verify the user's credentials using the Rust extension.
+            is_valid = rust_crud_api.verify_user(db_url, email, password)
+            if not is_valid:
+                context['error'] = "Invalid email or password."
+                return render(request, 'myapp/login.html', context)
+            
+            # Retrieve the user record to store additional info in session.
+            # (For simplicity, we retrieve all users and select the matching one.)
+            users = rust_crud_api.get_all_users(db_url)
+            user = next((u for u in users if u.email.lower() == email.lower()), None)
+            if not user:
+                context['error'] = "User not found."
+                return render(request, 'myapp/login.html', context)
+            
+            # Store user information in the session.
+            request.session['user_id'] = user.id
+            request.session['user_name'] = user.name
+            request.session['user_email'] = user.email
+            
+            return redirect('feed')
+        except Exception as e:
+            context['error'] = f"An error occurred: {str(e)}"
+            return render(request, 'myapp/login.html', context)
+    
+    return render(request, 'myapp/login.html', context)
+
+def logout_view(request):
+    # Clear all session data to log out the user.
+    request.session.flush()
+    # Optionally, render a confirmation page or redirect to login.
+    return render(request, 'myapp/logout.html')
\ No newline at end of file
diff --git a/django_project/myapp/views/groupviews.py b/django_project/myapp/views/groupviews.py
new file mode 100644
index 0000000000000000000000000000000000000000..069ee167384d999c05d30bb8c0a9c691fe601d29
--- /dev/null
+++ b/django_project/myapp/views/groupviews.py
@@ -0,0 +1,113 @@
+from django.shortcuts import render, redirect
+from django.http import JsonResponse
+from django.conf import settings
+import time
+import os
+import rust_crud_api 
+
+db_url = settings.DATABASE_URL
+
+def group_list_view(request):
+    """
+    List all groups.
+    """
+    db_url = settings.DATABASE_URL
+    context = {}
+    try:
+        groups = rust_crud_api.get_all_groups(db_url)
+        context['groups'] = groups
+    except Exception as e:
+        context['error'] = f"An error occurred: {e}"
+    return render(request, 'myapp/group_list.html', context)
+
+def group_create_view(request):
+    """
+    Create a new group.
+    """
+    db_url = settings.DATABASE_URL
+    context = {}
+    if request.method == 'POST':
+        group_name = request.POST.get('name', '').strip()
+        if not group_name:
+            context['error'] = "Group name is required."
+            return render(request, 'myapp/group_create.html', context)
+        try:
+            rust_crud_api.create_group(db_url, group_name)
+            return redirect('group_list')
+        except Exception as e:
+            context['error'] = f"An error occurred: {e}"
+            return render(request, 'myapp/group_create.html', context)
+    return render(request, 'myapp/group_create.html', context)
+
+def group_update_view(request, group_id):
+    """
+    Update an existing group's name.
+    """
+    db_url = settings.DATABASE_URL
+    context = {}
+    try:
+        group = rust_crud_api.get_group(db_url, int(group_id))
+        if group is None:
+            context['error'] = "Group not found."
+            return render(request, 'myapp/group_update.html', context)
+    except Exception as e:
+        context['error'] = f"Error retrieving group: {e}"
+        return render(request, 'myapp/group_update.html', context)
+    
+    if request.method == 'POST':
+        new_name = request.POST.get('name', '').strip()
+        if not new_name:
+            context['error'] = "New group name is required."
+            context['group'] = group
+            return render(request, 'myapp/group_update.html', context)
+        try:
+            # This assumes you've implemented an `update_group` function in your Rust library.
+            rust_crud_api.update_group(db_url, int(group_id), new_name)
+            return redirect('group_list')
+        except Exception as e:
+            context['error'] = f"Error updating group: {e}"
+            context['group'] = group
+            return render(request, 'myapp/group_update.html', context)
+    
+    context['group'] = group
+    return render(request, 'myapp/group_update.html', context)
+
+def group_delete_view(request, group_id):
+    """
+    Delete a group.
+    """
+    db_url = settings.DATABASE_URL
+    context = {}
+    if request.method == 'POST':
+        try:
+            # This assumes you have a `delete_group` function in your Rust library.
+            success = rust_crud_api.delete_group(db_url, int(group_id))
+            if success:
+                return redirect('group_list')
+            else:
+                context['error'] = "Deletion failed."
+        except Exception as e:
+            context['error'] = f"Error deleting group: {e}"
+    else:
+        try:
+            group = rust_crud_api.get_group(db_url, int(group_id))
+            context['group'] = group
+        except Exception as e:
+            context['error'] = f"Error retrieving group: {e}"
+    return render(request, 'myapp/group_delete.html', context)
+
+def group_detail_view(request, group_id):
+    """
+    Fetch a single group's details using the Rust extension and display them.
+    """
+    db_url = settings.DATABASE_URL
+    context = {}
+    try:
+        group = rust_crud_api.get_group(db_url, group_id)
+        if group is None:
+            return HttpResponseNotFound("Group not found.")
+        context['group'] = group
+    except Exception as e:
+        context['error'] = f"An error occurred: {e}"
+    return render(request, 'myapp/group_detail.html', context)
+
diff --git a/django_project/myapp/views/initview.py b/django_project/myapp/views/initview.py
new file mode 100644
index 0000000000000000000000000000000000000000..7b18a5cd48b315dda8c9c2cebfc4da94d3c81008
--- /dev/null
+++ b/django_project/myapp/views/initview.py
@@ -0,0 +1,14 @@
+from django.shortcuts import render, redirect
+from django.http import JsonResponse
+from django.conf import settings
+import time
+import os
+import rust_crud_api 
+
+def init_db_view(request):
+    db_url = os.environ.get("DATABASE_URL")
+    try:
+        rust_crud_api.init_db(db_url)
+        return JsonResponse({"message": "Database initialized"})
+    except Exception as e:
+        return JsonResponse({"error": str(e)}, status=500)
diff --git a/django_project/myapp/views/postviews.py b/django_project/myapp/views/postviews.py
new file mode 100644
index 0000000000000000000000000000000000000000..dc7ce508fa68ea91d1e1fe06fba78cd566072884
--- /dev/null
+++ b/django_project/myapp/views/postviews.py
@@ -0,0 +1,53 @@
+from django.shortcuts import render, redirect
+from django.http import JsonResponse
+from django.conf import settings
+import time
+import os
+import rust_crud_api 
+
+def create_post_view(request):
+    """
+    Allow a logged-in user to create a new post.
+    If a group is specified in the POST data, the post is associated with that group.
+    """
+    db_url = settings.DATABASE_URL
+    user_id = request.session.get('user_id')
+    if not user_id:
+        return redirect('login')
+    
+    context = {}
+    if request.method == 'POST':
+        content = request.POST.get('content', '').strip()
+        # Optionally, get a group_id if the post is for a group:
+        group_id = request.POST.get('group_id')
+        if group_id:
+            try:
+                group_id = int(group_id)
+            except ValueError:
+                group_id = None
+        else:
+            group_id = None
+        
+        if not content:
+            context['error'] = "Post content cannot be empty."
+            return render(request, 'myapp/create_post.html', context)
+        
+        try:
+            rust_crud_api.create_post(db_url, user_id, group_id, content)
+            return redirect('feed')
+        except Exception as e:
+            context['error'] = f"Error creating post: {str(e)}"
+    
+    return render(request, 'myapp/create_post.html', context)
+
+def feed_view(request):
+    """
+    Display a global feed of posts.
+    """
+    db_url = settings.DATABASE_URL
+    try:
+        posts = rust_crud_api.get_feed(db_url)
+    except Exception as e:
+        return render(request, 'myapp/feed.html', {'error': str(e)})
+    
+    return render(request, 'myapp/feed.html', {'posts': posts})
\ No newline at end of file
diff --git a/django_project/myapp/views/userviews.py b/django_project/myapp/views/userviews.py
new file mode 100644
index 0000000000000000000000000000000000000000..1efd1793404b2a14a15416091b01e6c0c24d6b78
--- /dev/null
+++ b/django_project/myapp/views/userviews.py
@@ -0,0 +1,140 @@
+from django.shortcuts import render, redirect
+from django.http import JsonResponse
+from django.conf import settings
+import time
+import os
+import rust_crud_api 
+
+db_url = settings.DATABASE_URL
+
+def register_view(request):
+    """
+    Handles user registration. Expects POST with
+    'name', 'email', 'password', 'username', 'studentid', 'startyear', 'endyear',
+    and optionally 'profilepicture'.
+    """
+    db_url = settings.DATABASE_URL  # Make sure DATABASE_URL is defined in your Django settings
+    context = {}
+
+    if request.method == 'POST':
+        name = request.POST.get('name', '').strip()
+        email = request.POST.get('email', '').strip()
+        password = request.POST.get('password', '').strip()
+        username = request.POST.get('username', '').strip()
+        studentid_str = request.POST.get('studentid', '').strip()
+        startyear_str = request.POST.get('startyear', '').strip()
+        endyear_str = request.POST.get('endyear', '').strip()
+
+        # 1. Check required fields
+        if not all([name, email, password, username, studentid_str, startyear_str, endyear_str]):
+            context['error'] = (
+                "Name, email, username, student ID, start year, and end year are required."
+            )
+            return render(request, 'myapp/register.html', context)
+
+        # 2. Try converting studentid, startyear, endyear to int
+        try:
+            studentid = int(studentid_str)
+        except ValueError:
+            context['error'] = "Student ID must be a number."
+            return render(request, 'myapp/register.html', context)
+
+        try:
+            startyear = int(startyear_str)
+        except ValueError:
+            context['error'] = "Start year must be a number."
+            return render(request, 'myapp/register.html', context)
+
+        try:
+            endyear = int(endyear_str)
+        except ValueError:
+            context['error'] = "End year must be a number."
+            return render(request, 'myapp/register.html', context)
+
+        # 3. Handle profile picture upload (if any)
+        profilepicture_file = request.FILES.get('profilepicture')
+        saved_path = None  # Default to None if no file is uploaded
+
+        if profilepicture_file:
+            # Make sure your form <input> matches name="profilepicture"
+            filename = profilepicture_file.name
+
+            # Decide a directory inside MEDIA_ROOT for profile pics
+            profile_dir = os.path.join(settings.MEDIA_ROOT, 'profile_pics')
+            os.makedirs(profile_dir, exist_ok=True)  # Ensure the folder exists
+
+            # Build the full filesystem path where we’ll store the file
+            save_path = os.path.join(profile_dir, filename)
+
+            # Write the file to disk in chunks
+            with open(save_path, 'wb+') as destination:
+                for chunk in profilepicture_file.chunks():
+                    destination.write(chunk)
+
+            # The path we'll store in the DB (so we can serve it at /media/profile_pics/<filename>)
+            saved_path = f"/media/profile_pics/{filename}"
+
+        # Debug prints to confirm we have the file and path
+        print("DEBUG: profilepicture_file is:", profilepicture_file)
+        print("DEBUG: saved_path is:", saved_path)
+
+        # 4. Call Rust to create the user
+        try:
+            rust_crud_api.create_user(
+                db_url,
+                name,
+                email,
+                password,
+                username,
+                studentid,
+                startyear,
+                endyear,
+                saved_path
+            )
+            # 5. After successful registration, redirect to login or some other page
+            return redirect('login')
+        except Exception as e:
+            context['error'] = f"An error occurred: {str(e)}"
+            return render(request, 'myapp/register.html', context)
+    
+    # If GET or anything else, just render the registration form
+    return render(request, 'myapp/register.html', context)
+
+
+
+def account_view(request):
+    """
+    Display the account page for the logged-in user.
+    """
+    user_id = request.session.get('user_id')
+    if not user_id:
+        return redirect('login')
+    db_url = settings.DATABASE_URL
+    try:
+        user = rust_crud_api.get_user(db_url, int(user_id))
+        if user is None:
+            return JsonResponse({'error': 'User not found.'}, status=404)
+        return render(request, 'myapp/account.html', {'user': user})
+    except Exception as e:
+        return JsonResponse({'error': str(e)}, status=500)
+
+
+def delete_account_view(request):
+    """
+    Delete the account of the logged-in user.
+    """
+    user_id = request.session.get('user_id')
+    if not user_id:
+        return redirect('login')
+    db_url = settings.DATABASE_URL
+    if request.method == 'POST':
+        try:
+            success = rust_crud_api.delete_user(db_url, int(user_id))
+            if success:
+                request.session.flush()  # Clear the session after deletion.
+                return redirect('register')
+            else:
+                return JsonResponse({'error': 'Account deletion failed.'}, status=500)
+        except Exception as e:
+            return JsonResponse({'error': str(e)}, status=500)
+    return render(request, 'myapp/delete_account.html')
\ No newline at end of file