Я не могу войти в систему как организация в django views
У меня есть требование создать crm. В этом у меня есть 3 вещи 1 это супер пользователь, который есть по умолчанию вторая организация, в которой я использую внешний ключ пользователя, потому что я не хочу создавать пользовательского пользователя и переписывать много вещей третий агент, который является пользователем как внешний ключ и подключен к организации нет я хочу войти как организация в приборной панели, если я использую суперпользователя в качестве учетных данных для входа, он говорит мне, что требуется экземпляр организации, если я вхожу, используя учетную запись организации, он выдает ошибку NoReverseMatch в /leads/login_handle
вот мой views.py
войти и подписаться код ручки
def signup_handle(request):
if request.method == "POST":
name = request.POST.get('name')
email = request.POST.get('email')
pass1 = request.POST.get('pass')
pass2 = request.POST.get('re_pass')
pass2 = request.POST.get('re_pass')
check = request.POST.get('agree-term')
if(pass1 != pass2):
return HttpResponse("Babe your passwod does not matches please try again")
else:
x = User.objects.create(email = email,username = email,first_name = name,is_staff = False)
# x = User.objects.create(name,email,pass1)
x.set_password(pass1)
x.save()
y = Organization(user = x,name = name)
y.save()
# print(f"lets varify the data name = {name},{check}")
return HttpResponse("Babe you have succesfully created your account")
else:
return HttpResponse("Babe something goes wrong")
def login_handle(request):
if request.method == "POST":
username = request.POST.get('your_name')
password = request.POST.get('your_pass')
# username = email
# print(f"{username} and pasword is {password}")
user = authenticate(request,username=username,password=password)
if user is not None:
login(request, user)
return redirect('')
else:
return HttpResponse("Babe try again you are not authenticated")
else:
return HttpResponse("babe only post method applicable")
вот мой полный файл models.py
from ckeditor.fields import RichTextField
from django.db import models
from django.contrib.auth.models import User
from ckeditor.fields import RichTextField
# Create your models here.
class Source(models.Model):
name = models.CharField(max_length=50,blank=True)
def __str__(self):
return self.name
class Followup(models.Model):
created_by = models.CharField(max_length=20,blank=True,null=True)
body = RichTextField(blank = True,null = True)
created_date = models.DateTimeField(auto_now_add=True)
updated_date = models.DateTimeField(auto_now_add=True)
class Organization(models.Model):
name = models.CharField(max_length=50,blank=True)
user = models.ForeignKey(User,on_delete=models.PROTECT,blank=True)
def __str__(self):
return self.name
class Agent(models.Model):
name = models.CharField(max_length=20,blank=True)
user = models.ForeignKey(User,on_delete=models.PROTECT,blank=True)
image = models.ImageField(upload_to="Agents/images",blank = True)
organization = models.ForeignKey(Organization,on_delete=models.PROTECT,blank=True,default="")
def __str__(self):
return self.name
class Lead(models.Model):
status = (
("fresh","Fresh"),
("open","Open"),
("closed","Closed"),
("pending","Pending"),
)
closed_by = (
("low_budget","Low Budget"),
("we_cant_do","We Cant Do"),
("client","Client Converted"),
)
pending_by = (
("with_customer","With Customer"),
("with_process","With Process"),
("pending_on_us","Pending On Us"),
)
name = models.CharField(max_length=20,blank=True)
email = models.CharField(max_length=30,default="")
assign_to = models.CharField(max_length=30,default="")
mobile_no = models.IntegerField(blank=True)
subject = models.CharField(max_length=100,blank=True)
message = models.TextField(blank=True)
source = models.CharField(max_length=30,default="")
# source = models.ForeignKey(Source,blank=True,on_delete=models.PROTECT,null=True)
created_date = models.DateTimeField(auto_now_add=True)
updated_date = models.DateTimeField(auto_now_add=True)
state = models.CharField(choices=status,max_length=20,blank=True,default="fresh")
closed_by = models.CharField(max_length=15,choices=closed_by,blank=True)
pending_by = models.CharField(max_length=15,choices=pending_by,blank=True)
image=models.ImageField(upload_to="lead/images",blank = True)
def __str__(self):
return self.name
Как сказано в первом ответе, я добавил путь в перенаправлении, теперь он вошел в систему, но не отображает страницу
def login_handle(request):
if request.method == "POST":
username = request.POST.get('your_name')
password = request.POST.get('your_pass')
# username = email
# print(f"{username} and pasword is {password}")
user = authenticate(request,username=username,password=password)
if user is not None:
login(request, user)
return redirect('/')
else:
return HttpResponse("Babe try again you are not authenticated")
else:
return HttpResponse("babe only post method applicable")
Я получаю ошибку
Вот название моего приложения home urls.py
urls.py
from django.contrib import admin
from django.urls import path
from home import views
urlpatterns = [
path('',views.index,name="index"),
# create agent
path('create_agent_page',views.create_agent_page,name="create_agent_page"),
path('create_agent',views.create_agent,name="create_agent"),
path('signup_page',views.signup_page,name="signup_page"),
path('login_page',views.login_page,name="login_page"),
path('signup_handle',views.signup_handle,name="signup_handle"),
path('login_handle',views.login_handle,name="login_handle"),
#Lead handleing
path('create_lead',views.create_lead_page,name="create_lead"),
path('follow_up/<int:id>',views.follow_up,name="follow_up"),
path('update_lead/<int:id>',views.update_lead,name="update_lead"),
# path('update_lead',views.update_lead,name="update_lead"),
path('creat_handle_lead',views.creat_handle_lead,name="creat_handle_lead"),
path('lead_list',views.lead_list,name="lead_list"),
]
вот мой проект urls.py
from django.contrib import admin
from django.urls import path
from django.urls.conf import include
urlpatterns = [
path('admin/', admin.site.urls),
path('leads/', include('home.urls')),
]
return redirect('')
Это неправильно. Вы должны сделать
from django.urls import reverse
return HttpResponseRedirect(reverse('app_name:url_pattern_name'))
или вы можете указать шаблон url вручную
from django.urls import reverse
return HttpResponseRedirect('/dashboard/')