I created a custom admin view in django for one of the models. But the url is available to anyone who is not logged it.
<code>from django.contrib import admin
from django.urls import path
from django.shortcuts import render, redirect
from .models import Question
from django.contrib.admin.views.decorators import staff_member_required
class QuestionAdmin(admin.ModelAdmin):
list_display = ('question_text', 'pub_date') # Your model fields
def get_urls(self):
urls = super().get_urls()
new_urls = [path('upload-csv/',self.upload_csv),]
return new_urls + urls
@staff_member_required
def upload_csv(self,request):
return render(request,"admin/csv_upload.html")
admin.site.register(Question,QuestionAdmin)
</code>
<code>from django.contrib import admin
from django.urls import path
from django.shortcuts import render, redirect
from .models import Question
from django.contrib.admin.views.decorators import staff_member_required
class QuestionAdmin(admin.ModelAdmin):
list_display = ('question_text', 'pub_date') # Your model fields
def get_urls(self):
urls = super().get_urls()
new_urls = [path('upload-csv/',self.upload_csv),]
return new_urls + urls
@staff_member_required
def upload_csv(self,request):
return render(request,"admin/csv_upload.html")
admin.site.register(Question,QuestionAdmin)
</code>
from django.contrib import admin
from django.urls import path
from django.shortcuts import render, redirect
from .models import Question
from django.contrib.admin.views.decorators import staff_member_required
class QuestionAdmin(admin.ModelAdmin):
list_display = ('question_text', 'pub_date') # Your model fields
def get_urls(self):
urls = super().get_urls()
new_urls = [path('upload-csv/',self.upload_csv),]
return new_urls + urls
@staff_member_required
def upload_csv(self,request):
return render(request,"admin/csv_upload.html")
admin.site.register(Question,QuestionAdmin)
I tried adding the staff_member_required
decorator but there is an error message saying 'QuestionAdmin' object has no attribute 'user'