How to disable django views in the browser

76 views
Skip to first unread message

Mostapha Bouderka

unread,
Mar 10, 2021, 2:12:22 PM3/10/21
to Django users
Hi

I'm working on a project with react and django; and want to use django views to be used as information source only and not show a page on the browser. For example, I have a pilot sign up page that uses a pilot create view to provide information to the pilot model. I want the users to be able to sign up only by using the sign up page, but if someone accesses the create pilot view, he shouldn't see anything.
( if the url is domain.com/sign-up, he can see the react form )
(if the url is domain.com/pilot/create, he shouldn't see anything or get an error, this url should only be used by the react form) 

I hope the question is clear and thanks in advance.

Kasper Laudrup

unread,
Mar 10, 2021, 2:44:26 PM3/10/21
to django...@googlegroups.com
If I understand correctly, wouldn't it work simply to look at the
request method for the "domain.com/pilot/create" page and only return a
response in case the method is POST very similar to any other form
handling like this example:

https://docs.djangoproject.com/en/dev/topics/forms/#using-a-form-in-a-view

but leaving out the else branch and the default return (which would then
make Django return an HTTP 405 error)?

I don't know anything about React, but from a quick look at the
documentation it like it's just normal HTTP forms using POST.

Kind regards,

Kasper Laudrup

Kunal Solanke

unread,
Mar 10, 2021, 3:01:26 PM3/10/21
to django...@googlegroups.com
Idk the overall use case here ,
But if the prject is reasonably bigger and you want to use class based views, I'd suggest you to use drf. 
But you if you don't want to use that,you will have to overide most to the CBV given by djnango as most of them expect a success url or a template that they render. 

If you are fine with functional views, do as kasper said,just use post method. And moreover send JsonResponse .

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/219471bc-d101-a13e-388f-25a0836e61ef%40stacktrace.dk.

Kunal Solanke

unread,
Mar 10, 2021, 3:02:15 PM3/10/21
to django...@googlegroups.com
Please ignore typos. 

Mostapha Bouderka

unread,
Mar 10, 2021, 3:04:05 PM3/10/21
to Django users
Thanks for the reply.

However, your answer didn't really solve my issue.
The form i mentioned is just an example, in fact i have other views,. The issue is that i want those views to only handle information and send them bach to the front end, but if a user tries to access them through a browser, he either gets redirected to another page or gets an error message.

Mostapha Bouderka

unread,
Mar 10, 2021, 3:04:53 PM3/10/21
to Django users
I'am using the django rest framework

Kunal Solanke

unread,
Mar 10, 2021, 3:13:33 PM3/10/21
to django...@googlegroups.com
Ok in that case, drf by default sets a browsableapi render on all of the views and viewsets, either overide that in settings, or use renderer_classes=(JSONRendere,) in views in which yiu want to stop it. 

Search for BrowsableAPIRenderer. 

Ig you should have mentioned drf sooner. 




Kunal Solanke

unread,
Mar 10, 2021, 3:14:37 PM3/10/21
to django...@googlegroups.com
By doing this you won't be able to stop the get requests from browser, but post requests can be stopped.

Kunal Solanke

unread,
Mar 10, 2021, 3:15:08 PM3/10/21
to django...@googlegroups.com
Also you will need to add allowed hosts in djnago settung to stop requests from untrusted origins

Mostapha Bouderka

unread,
Mar 10, 2021, 3:17:09 PM3/10/21
to Django users
Alright i'll check it right now

Many thanks for the assistance.

Ryan Nowakowski

unread,
Mar 10, 2021, 4:06:51 PM3/10/21
to Django users
You can probably do something like:

if not request.accept('application/json'):
raise SuspiciousOperation("Sorry we only handle JSON")

Kunal Solanke

unread,
Mar 10, 2021, 10:33:56 PM3/10/21
to Django users
Won't you end up stopping  multipart  requests in that case?

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages