当我在 url 时在 django url 中遇到问题 ...abc/pqr 我点击 xyz 而不是到达 ...xyz 但是 ...abc/xyz
Getting a problem in django url when I am at url ...abc/pqr and I click on xyz than It is not getting to the ...xyz but ...abc/xyz
我的大学管理系统项目出现问题。我试图在我的项目中添加作业提交功能。其中,当学生点击老师创建的作业时,他将进入一个页面,该页面是:提交作业页面,或者如果他已经提交了该作业,则更新或仅显示相关信息。
urls.py 项目文件
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('cmsapp.urls')),
]
urlpatterns+= static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urls.py for cmsapp.
urlpatterns = [...
path('studentattendancereport', studentviews.student_attendance_report, name='studentattendancereport'),
path('fetchstudentattendance', studentviews.fetch_student_attendance, name='fetchstudentattendance'),
path('applyforleavestudent', studentviews.applyforleave, name='applyforleavestudent'),
path('marksreportstudent', studentviews.marksreportstudent, name='marksreportstudent'),
path('assignment', studentviews.assignments, name='assignment'),
path('assignmentupload/<int:id>', studentviews.assignment_upload, name='assignmentupload'),
]
views.py
def assignments(request):
subject = Subject.objects.filter(course=Student.objects.get(admin=request.user.id).course)
assignments = []
for s in subject:
for a in Assignment.objects.filter(subject_id=s.id):
assignments.append(a)
context = {'assignments': assignments}
return render(request, 'cmsapp/student/assignments.html', context)
def assignment_upload(request, id):
if request.method == 'POST':
student_id = Student.objects.get(admin=request.user.id)
assignment = Assignment.objects.get(id=id)
assignment_file = request.FILES['assignment']
try:
Student_Assignment.objects.create(assignment_id=assignment, student_id=student_id, document=assignment_file)
messages.success(request, 'Assignment is submited successfully.')
return redirect('assignment')
except:
messages.error(request, 'There is some problem, Please try again later.')
return redirect('assignment')
else:
assignment = Assignment.objects.get(id=id)
student_id = Student.objects.get(admin=request.user.id)
assignment_report = Student_Assignment.objects.filter(assignment_id=assignment.id, student_id=student_id).first()
if assignment_report:
context = {'assignment':assignment, 'assignment_report':assignment_report, 'student_id':student_id}
return render(request, 'cmsapp/student/assignment_report.html', context)
else:
context = {'assignment':assignment, 'assignment_report':assignment_report, 'student_id':student_id}
return render(request, 'cmsapp/student/assignment_upload.html', context)
assignment.html
<div class="container">
<h3 class="heading">Assignments
</h3>
<table class="table table-hover table-bordered mt-4">
<tr class="bg-dark text-white"><th>ID</th><th>Title</th><th>Description</th><th>Subject</th><th>Session</th><th>Created_at</th><th>Updated_at</th></tr>
{% for a in assignments %}
<tr>
<td><a href="{% url 'assignmentupload' a.id %}">{{a.id}}</a></td>
<td><a href="{% url 'assignmentupload' a.id %}">{{a.title}}</a></td>
<td><a href="{% url 'assignmentupload' a.id %}">{{a.description}}</a></td>
<td><a href="{% url 'assignmentupload' a.id %}">{{a.subject_id}}</a></td>
<td><a href="{% url 'assignmentupload' a.id %}">{{a.session_id}}</a></td>
<td><a href="{% url 'assignmentupload' a.id %}">{{a.created_at}}</a></td>
<td><a href="{% url 'assignmentupload' a.id %}"></a></td>
</tr>
{% endfor %}
</table>
</div>
assignment_upload.html
<div class="container">
<h3 class="heading">Assignment</h3>
<table class="table table-hover table-bordered text-capitalize">
<tr><th>Assignment Id</th><td>{{assignment.id}}</td></tr>
<tr><th>Title</th><td>{{assignment.title}}</td></tr>
<tr><th>Description</th><td>{{assignment.description}}</td></tr>
<form action="{% url 'assignmentupload' assignment.id %}" method="POST" class="form-group" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" placeholder="assignment" name="assignment" class="form-control mt-4">
<button class="btn btn-outline-success form-control mt-2">Submit</button>
</form>
</div>
assignment_report.html
<div class="container">
<h3 class="heading">Assignment</h3>
<table class="table table-hover table-bordered text-capitalize">
<tr><th>Assignment Id</th><td>{{assignment.id}}</td></tr>
<tr><th>Title</th><td>{{assignment.title}}</td></tr>
<tr><th>Description</th><td>{{assignment.description}}</td></tr>
<tr> <th>Your Assignment ID</th> <td>{{assignment_report.id}}</td></tr>
<tr> <th>Student ID</th> <td>{{assignment_report.student_id.id}}</td></tr>
<tr> <th>Document</th> <td>{{assignment_report.document}}</td></tr>
<tr> <th>Update</th> <td><form action="" method="POST" class="form-group" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" placeholder="assignment" name="assignment" class="form-control mt-1" style="width: 40%; display: inline;" accept=".pdf">
<button class="btn btn-outline-success btn-sm mt-2" style="display: inline; float: right; width: 20%;">Update</button>
</form></td></tr>
</table>
<a class="btn btn-outline-secondary btn-sm" href="{{assignment_report.document.url}}" open>Open</a>
<a class="btn btn-outline-info btn-sm" href="{{assignment_report.document.url}}" download>Download</a>
<p style="font-size: 12px; color: gray;">To Open or Download Assignment file click on buttons above.</p>
</div>
base.html
<div style="height: 120%; min-height: 96vh; display: flex; flex-wrap: wrap; align-content: stretch;">
<div class="container d-flex align-content-stretch flex-wrap float-left"
style="width: 15%;float: left; background-color: black;">
<nav class="nav nav-pills flex-column">
{% with request.resolver_match.url_name as url_name %}
<a class="nav-item nav-link nav-fill {% if url_name == 'studentdashboard'%}active{% endif %}"
href="{% url 'studentdashboard' %}">Dashboard</a>
<a class="nav-item nav-link subject {% if url_name == 'studentattendancereport'%}active{% endif %}"
href="#">Subjects</a>
{% for s in subject %}
<a class="nav-item nav-link d-none subject-token border border-dark {% if url_name == 'studentattendancereport'%}active{% endif %}"
href="#">{{s}}</a>
{% endfor %}
<a class=" nav-item nav-link {% if url_name == 'studentattendanceview'%}active{% endif %}"
href="studentattendancereport">Attendance</a>
<a class="nav-item nav-link {% if url_name == 'studentattendanceview'%}active{% endif %}"
href="marksreportstudent">Marks</a>
<a class="nav-item nav-link {% if url_name == 'assignment' or url_name == 'assignmentupload' %}active{% endif %}"
href="assignment">Assignment</a>
<a class="nav-item nav-link {% if url_name == 'applyforleave'%}active{% endif %}"
href="applyforleavestudent">Leave</a>
<a class="nav-item nav-link" href="#">Feedback</a>
{% endwith %}
<a class="nav-item nav-link" id="logout" href="{% url 'logout' %}">Log Out</a>
</nav>
</div>
<div style="background-color: white; width: 85%; float: right; height: 100%;">
{% if messages %}
<div class="messages container mt-2">
{% for message in messages %}
<div{% if message.tags %}
class="alert text-capitalize alert-{% if message.tags == 'error' %}danger{% else %}success{%endif%}"
{% endif %}>{{ message }}
</div>
{% endfor %}
</div>
{% endif %}
<div style="width: 100%;margin-top: 5px;">
{% block content %}
{% endblock %}
</div>
</div>
</div>
我有类似类型的 url 用于更新学生详细信息,它不会抛出这样的错误 url。
在你的base.html
当您为 <a>
标签设置 href
时,请确保它是
href="{% url 'some-url-name' %}"
比如你写的
href="studentattendancereport"
这只会将其附加到您当前的 url
你必须为
做出正确的选择
href="studentattendancereport" ---> href="{% url 'studentattendancereport' %}"
href="marksreportstudent" ---> href="{% url 'marksreportstudent' %}"
href="assignment" ---> href="{% url 'assignment' %}"
href="applyforleavestudent" ---> href="{% url 'applyforleavestudent' %}"
您可以参考here了解更多django's url template tag
我的大学管理系统项目出现问题。我试图在我的项目中添加作业提交功能。其中,当学生点击老师创建的作业时,他将进入一个页面,该页面是:提交作业页面,或者如果他已经提交了该作业,则更新或仅显示相关信息。
urls.py 项目文件
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('cmsapp.urls')),
]
urlpatterns+= static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urls.py for cmsapp.
urlpatterns = [...
path('studentattendancereport', studentviews.student_attendance_report, name='studentattendancereport'),
path('fetchstudentattendance', studentviews.fetch_student_attendance, name='fetchstudentattendance'),
path('applyforleavestudent', studentviews.applyforleave, name='applyforleavestudent'),
path('marksreportstudent', studentviews.marksreportstudent, name='marksreportstudent'),
path('assignment', studentviews.assignments, name='assignment'),
path('assignmentupload/<int:id>', studentviews.assignment_upload, name='assignmentupload'),
]
views.py
def assignments(request):
subject = Subject.objects.filter(course=Student.objects.get(admin=request.user.id).course)
assignments = []
for s in subject:
for a in Assignment.objects.filter(subject_id=s.id):
assignments.append(a)
context = {'assignments': assignments}
return render(request, 'cmsapp/student/assignments.html', context)
def assignment_upload(request, id):
if request.method == 'POST':
student_id = Student.objects.get(admin=request.user.id)
assignment = Assignment.objects.get(id=id)
assignment_file = request.FILES['assignment']
try:
Student_Assignment.objects.create(assignment_id=assignment, student_id=student_id, document=assignment_file)
messages.success(request, 'Assignment is submited successfully.')
return redirect('assignment')
except:
messages.error(request, 'There is some problem, Please try again later.')
return redirect('assignment')
else:
assignment = Assignment.objects.get(id=id)
student_id = Student.objects.get(admin=request.user.id)
assignment_report = Student_Assignment.objects.filter(assignment_id=assignment.id, student_id=student_id).first()
if assignment_report:
context = {'assignment':assignment, 'assignment_report':assignment_report, 'student_id':student_id}
return render(request, 'cmsapp/student/assignment_report.html', context)
else:
context = {'assignment':assignment, 'assignment_report':assignment_report, 'student_id':student_id}
return render(request, 'cmsapp/student/assignment_upload.html', context)
assignment.html
<div class="container">
<h3 class="heading">Assignments
</h3>
<table class="table table-hover table-bordered mt-4">
<tr class="bg-dark text-white"><th>ID</th><th>Title</th><th>Description</th><th>Subject</th><th>Session</th><th>Created_at</th><th>Updated_at</th></tr>
{% for a in assignments %}
<tr>
<td><a href="{% url 'assignmentupload' a.id %}">{{a.id}}</a></td>
<td><a href="{% url 'assignmentupload' a.id %}">{{a.title}}</a></td>
<td><a href="{% url 'assignmentupload' a.id %}">{{a.description}}</a></td>
<td><a href="{% url 'assignmentupload' a.id %}">{{a.subject_id}}</a></td>
<td><a href="{% url 'assignmentupload' a.id %}">{{a.session_id}}</a></td>
<td><a href="{% url 'assignmentupload' a.id %}">{{a.created_at}}</a></td>
<td><a href="{% url 'assignmentupload' a.id %}"></a></td>
</tr>
{% endfor %}
</table>
</div>
assignment_upload.html
<div class="container">
<h3 class="heading">Assignment</h3>
<table class="table table-hover table-bordered text-capitalize">
<tr><th>Assignment Id</th><td>{{assignment.id}}</td></tr>
<tr><th>Title</th><td>{{assignment.title}}</td></tr>
<tr><th>Description</th><td>{{assignment.description}}</td></tr>
<form action="{% url 'assignmentupload' assignment.id %}" method="POST" class="form-group" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" placeholder="assignment" name="assignment" class="form-control mt-4">
<button class="btn btn-outline-success form-control mt-2">Submit</button>
</form>
</div>
assignment_report.html
<div class="container">
<h3 class="heading">Assignment</h3>
<table class="table table-hover table-bordered text-capitalize">
<tr><th>Assignment Id</th><td>{{assignment.id}}</td></tr>
<tr><th>Title</th><td>{{assignment.title}}</td></tr>
<tr><th>Description</th><td>{{assignment.description}}</td></tr>
<tr> <th>Your Assignment ID</th> <td>{{assignment_report.id}}</td></tr>
<tr> <th>Student ID</th> <td>{{assignment_report.student_id.id}}</td></tr>
<tr> <th>Document</th> <td>{{assignment_report.document}}</td></tr>
<tr> <th>Update</th> <td><form action="" method="POST" class="form-group" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" placeholder="assignment" name="assignment" class="form-control mt-1" style="width: 40%; display: inline;" accept=".pdf">
<button class="btn btn-outline-success btn-sm mt-2" style="display: inline; float: right; width: 20%;">Update</button>
</form></td></tr>
</table>
<a class="btn btn-outline-secondary btn-sm" href="{{assignment_report.document.url}}" open>Open</a>
<a class="btn btn-outline-info btn-sm" href="{{assignment_report.document.url}}" download>Download</a>
<p style="font-size: 12px; color: gray;">To Open or Download Assignment file click on buttons above.</p>
</div>
base.html
<div style="height: 120%; min-height: 96vh; display: flex; flex-wrap: wrap; align-content: stretch;">
<div class="container d-flex align-content-stretch flex-wrap float-left"
style="width: 15%;float: left; background-color: black;">
<nav class="nav nav-pills flex-column">
{% with request.resolver_match.url_name as url_name %}
<a class="nav-item nav-link nav-fill {% if url_name == 'studentdashboard'%}active{% endif %}"
href="{% url 'studentdashboard' %}">Dashboard</a>
<a class="nav-item nav-link subject {% if url_name == 'studentattendancereport'%}active{% endif %}"
href="#">Subjects</a>
{% for s in subject %}
<a class="nav-item nav-link d-none subject-token border border-dark {% if url_name == 'studentattendancereport'%}active{% endif %}"
href="#">{{s}}</a>
{% endfor %}
<a class=" nav-item nav-link {% if url_name == 'studentattendanceview'%}active{% endif %}"
href="studentattendancereport">Attendance</a>
<a class="nav-item nav-link {% if url_name == 'studentattendanceview'%}active{% endif %}"
href="marksreportstudent">Marks</a>
<a class="nav-item nav-link {% if url_name == 'assignment' or url_name == 'assignmentupload' %}active{% endif %}"
href="assignment">Assignment</a>
<a class="nav-item nav-link {% if url_name == 'applyforleave'%}active{% endif %}"
href="applyforleavestudent">Leave</a>
<a class="nav-item nav-link" href="#">Feedback</a>
{% endwith %}
<a class="nav-item nav-link" id="logout" href="{% url 'logout' %}">Log Out</a>
</nav>
</div>
<div style="background-color: white; width: 85%; float: right; height: 100%;">
{% if messages %}
<div class="messages container mt-2">
{% for message in messages %}
<div{% if message.tags %}
class="alert text-capitalize alert-{% if message.tags == 'error' %}danger{% else %}success{%endif%}"
{% endif %}>{{ message }}
</div>
{% endfor %}
</div>
{% endif %}
<div style="width: 100%;margin-top: 5px;">
{% block content %}
{% endblock %}
</div>
</div>
</div>
我有类似类型的 url 用于更新学生详细信息,它不会抛出这样的错误 url。
在你的base.html
当您为 <a>
标签设置 href
时,请确保它是
href="{% url 'some-url-name' %}"
比如你写的
href="studentattendancereport"
这只会将其附加到您当前的 url
你必须为
做出正确的选择href="studentattendancereport" ---> href="{% url 'studentattendancereport' %}"
href="marksreportstudent" ---> href="{% url 'marksreportstudent' %}"
href="assignment" ---> href="{% url 'assignment' %}"
href="applyforleavestudent" ---> href="{% url 'applyforleavestudent' %}"
您可以参考here了解更多django's url template tag