Резюме: я пытаюсь создать сайт о вакансиях. У меня есть dashboard
представление, которое возвращает все job
объекты и отображает их в шаблоне. Пользователь может перемещаться здесь только для просмотра своих сообщений, и пользователь также перенаправляется сюда после создания нового сообщения, редактирования сообщения или удаления сообщения. Я хотел бы иметь возможность предупредить пользователя «Ваше сообщение было создано / отредактировано / удалено успешно» в зависимости от того, как они попали на эту страницу, но я не уверен, что лучший способ go о. Ниже показано, как я реализовал функцию оповещения пользователя о создании сообщения, но я не думаю, что это был лучший способ сделать это.
Первое созданное мной представление было post_job
, где пользователь может создать новую должность. Чтобы отметить, что задание было новым, я подумал добавить логическое поле к модели Job
:
class Job(models.model):
#...
new = models.BooleanField(default = True) # post is new by default, set to False later
, а затем сделать это в dashboard
:
@login_required
def dashboard(request):
jobs = Job.objects.all()
new_job = False # set to true if there is a new job ( would only be the case if the user got directed to this view after posting a job)
for job in jobs: # loop through jobs to see if any have new=True
if job.new:
new_job = True
job.new = False # set to false so it's not considered new next time dashboard is loaded
job.save()
return render(request, 'job/dashboard.html', {'jobs':jobs, 'new_job': new_job})
и на панели инструментов. html:
{% if new_job %}
<p>Your job was posted successfully</p>
{% endif %}
Это работает и успешно предупреждает пользователя только тогда, когда он только что создал новое сообщение. Тем не менее, я чувствую, что должен быть лучший способ реализовать эту функцию, чем добавить поле edited
к модели Job
и собирался сказать поле deleted
, но я думаю, что объект больше не будет существовать. В любом случае, если вы можете предложить что-либо для достижения этой цели, спасибо за помощь. Не уверен, что это правильный термин, но кажется, что существует система маркировки, которая предупреждает, когда объект создается / редактируется / обновляется, если это довольно часто?
Редактировать: Есть ли способ передать дополнительные переменные при перенаправлении в представление dashboard
? Например, вот представление post_job
:
def post_job(request):
if request.method == 'POST':
form = JobForm(request.POST)
if form.is_valid():
instance = form.save(commit=False)
instance.business= Business.objects.get(user=request.user)
instance.save()
return redirect('dashboard') # is there a way to tell the dashboard view the post_job view sent the user?
else:
form = JobForm()
return render(request, 'job/post_job.html', {'section': 'dashboard', 'form':form})
, если бы я мог просто сделать это для edit
и delete
представлений.