{% extends "base.html" %} {% block title %}Bulk Student Import — Admin{% endblock %} {% block content %}

Upload CSV file

Required CSV format
username,email,password,class_name
student1,student1@school.com,pass123,Batch A
student2,student2@school.com,pass123,Batch A
student3,student3@school.com,pass456,Batch B
  • Header row is required — columns in any order
  • class_name is optional — leave blank to leave unassigned
  • Class names must exactly match existing class names
  • Usernames must be ≥ 3 characters, passwords ≥ 6 characters
  • Duplicate usernames or emails will be skipped
⬇ Download template CSV

Available Classes

{% if classes %}
{% for c in classes %} {% if c['is_active'] %} {% endif %} {% endfor %}
Class name (use exact spelling)Students
{{ c['name'] }} {{ c['student_count'] }}
{% else %}

No active classes yet. Create one →

{% endif %}
{% if results %}

Import Results

{{ summary.created }}
✓ Created
{{ summary.skipped }}
⚠ Skipped
{{ summary.failed }}
✗ Failed
{{ summary.total }}
Total rows
{% for r in results %} {% endfor %}
UsernameStatusMessage
{{ r['username'] }} {% if r['status'] == 'created' %} ✓ Created {% elif r['status'] == 'skipped' %} ⚠ Skipped {% else %} ✗ Failed {% endif %} {{ r['message'] }}
View all students → Import more
{% endif %}
{% endblock %}