i need help and advice about django admin - python

I'm new with python and Django. I know a lot about the Codeigniter framework and there if you want to create a project like an eCommerce you must create an admin panel with template and function for the backend.
when I was creating backend I was adding functions for the admin panel where all functions were for adding some informations in the database.
so when I start with Django I saw that there was an integrated admin panel which can be modified but I have a question can I create app for Django which will be admin panel of my project and can I deactivate or delete integrated admin panel or can I add some functions and redesign integrated one

Yes you can "deactivate" the admin site. The easiest way would be to just remove the admin site url from your urls.py file. E.g (for my stock database) remove this line:
path('stock/admin/', admin.site.urls)

Yes, you can "deactivate" the admin site. The easiest way would be to just remove the admin site URL from your urls.py file.
E.g (for my stock database) remove this line:
path('stock/admin/', admin.site.urls)

Related

Simultaneous authorization of the administrator in the admin panel and on the site(Django)

When logging in through the admin panel, the administrator simultaneously logs in to the site and in the admin panel, how can I fix this, please tell me?
The problem is that when I go on behalf of the admin in the admin panel, authorization occurs on the site that I am developing, and I do not need it. I would like the authorization to be performed separately on the site(for users) and on the admin panel(for admin).(DJANGO).Please help me with this question ???
I don't believe there's an easy way to do what you want to do. The idea of a single user being logged in at a time is pretty fundamental to how Django works.
If this is just to make development and testing easier (by not having to constantly switch users), this can be accomplished by using multiple browsers. For example, you can simultaneously log into with an administrator account in Firefox and with a standard user account in Chrome.
If you still need to do this for one browser, the most obvious way I can think of would be to implement two separate websites - one for your admin pages and one for your site. Here's one way you could implement a separate site for just your admin pages:
Create a file myproject/admin_settings.py
from myproject.settings import *
# make sure any cookies will be named differently
CSRF_COOKIE_NAME = 'myproject_admin_csrftoken'
SESSION_COOKIE_NAME = 'myproject_admin_sessionid'
# point to a different urls.py file
ROOT_URLCONF = 'myproject.admin_urls'
Create a file myproject/admin_urls.py
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
]
Remove any references to the admin section from your other urls.py file.
Now you should be able to run just the admin site by itself:
python manage.py runserver --settings=myproject.admin_settings
If you want to run both sites using Django dev server, open two terminals and make sure to run on two different ports
terminal 1:
python manage.py runserver 127.0.0.1:8000
terminal 2:
python manage.py runserver 127.0.0.1:8001 --settings=myproject.admin_settings

Python Django: Customize Admin Startpage as analytical Dashboard

I am currently developing a mobile app using Ionic and I am using Django Admin Interface as sort of Backend for adding and editing the content of my mobile app through a MySQL Database.
I currently wish to create a custom analytical dashboard for tracking the usage of the users of my mobile app in the startpage of the Django Admin. While there are some analytical packages for tracking the usage in Django, they only function for web applications.
In my case I need to gather and display aggregate data from my database (Django models & not Django models) as well for other APIs. Is there a way how can I fetch data in form of SQL queries and display them in my dashboard using Python (Django)?
And how can I extend the starting page of Django Admin to a full analytical dashboard with the named functionalities?
I am currently struggling with this as I am new to Django. Any help is much appreciated!
There are some prebuilt admin themes which you can look into, and I personally recommend Django Jet. You can also change directly the way that the admin templates are made and rendered looking around the contrib/admin folder on your Django installation, or you can extend the admin views and templates, take a look at the documentation. Hope I could help!

Overriding Django admin vs creating new templates/views

I am a total noob with Django, I come from the PHP world and I am used to doing things differently.
I'm building an app and I want to change the way the backend looks, I want to use Bootstrap 4 and add a lot of custom stuff e.g. permission based admin views, and I was wondering what is the best practice, or how do more experienced django devs go about it?
Do they override all the django.contrib.admin templates, or do they build custom templates and login/register next to it, and use the django.contrib.admin only for the superuser?
What is the django way?
Django admin is intended for administration purposes. For all intents and purposes it is a direct interface to your database. While I have seen some people building customer facing interfaces using admin, this is most definitely not the way to make a general Django web application.
You should define views for your models. You can use built-in APIs to login and authenticate users. You should most likely restrict access to admin to internal users only.
As for templates, the modern way of doing things is to dynamically fetch data using an API and do all the UI logic in Javascript. Django can be used very well to provide an API to a frontend. Look into Django REST Framework. The basic idea is to write serializers for your models and have view functions serve the serialized data to the front end.
You could go the old school way and render your pages using templates of course. In that case your views would render templates using data provided by your models.
Yes. The admin pages is actually for administering the webpage. For user login and registration you create the templates. However, if you want your backend to look different then you can tweak the template for the admin page, admin login page as well. And you can also have permission based admin views. It's okay to over ride the defaults as long as you know what you're doing. Hope that helped.

How to show entire existing postgres database in Django admin view

I have an existing PostgreSQL database and I'd like to browse it within Django's admin view. How do you make all the existing tables in a database browsable in Django's admin view?
I tried following the steps here but I was only able to view Groups and Users. I also read that maybe I have to edit admin.py but I'm not sure where that file would be located and what I'd have to put in it.
You need to tell Django which tables you want to browse in the admin view.
To manage database tables Django uses models. Your Django project should be divided into multiple apps and each app has its own modules such as models.py, view.py, admin.py etc.
So if you want to browse all the tables you need to add admin.py files in every app and in each admin.py file add the following lines to register the model with Django's admin.
from django.contrib import admin
from <your_app>.models import <your_model1>, <your_models2>
Now for each model that you imported add.
admin.site.register(<your_model1>)
admin.site.register(<your_model2>)
Please note that only those tables will be visible in Django admin which are managed by Django models. If you do not have a corresponding model for a table in your database you won't be able to view it in the admin.
To know more about the how the admin works read the Django documentation for your version of Django here. Also here is a good tutorial on configuring the admin view in Django.

Django Users that cannot access Admin and Customizing Admin

I want to use the Django user model, but I want to keep the super user to administrate the site. I want the other users to be unable to access the admin interface. But I want them to be able to access another custom admin page that deals with uploaded files. I've read a lot of documentation regarding customizing the user model and the admin pages, but I'm having trouble figuring out how to accomplish such a task.
I see that I can subclass the AdminSite that is used for the admin page and make my own, but that runs into problems with is_staff and such.
My idea was to create a custom permission and extend the user model to have it, this permission would allow access to the admin page. But I'm still unsure how to create the admin page with the method I mentioned and avoid the problems of still allowing them access to the regular admin page.
What would be the best method to accomplish this? How could I create an admin page like this and such a permission and then assign it to an extended User as well as prevent them access to the normal admin page?
I am familiar with the decorator #user_passes_test() to check for groups, but what I am concerned with is making sure they can't get into anything but the "lesser" admin panel. Basically I don't want these users to be able to access anything but their own admin dashboard.
Any examples or suggestions would be most welcome, I need advice on creating the admin page for these normal users, how to create these normal users, and how to ensure that they can access the "lesser" admin page but not the normal django admin that has control over everything.
As a side question, if I was using django-suit to customize my normal admin page, would this change anything?
Thanks
If I understood correctly:
in your views.py
from django.contrib.auth.decorators import permission_required
adn over your def:
#permission_required('is_superuser')
this page will only see is_superuser.

Categories

Resources