I have written a function on paypal when user would cancel payment then it would redirect to paypal-cancel page which i have defied in my app level url.py. But problem is it is showing error that
Not Found
The requested URL /paypal-cancel was not found on this server.
BuT I have defined this function in url.
web/urls.py
urlpatterns = [
url(r'^paypal-payment$', ApiPaymentPayPalView.as_view(), name='paypal-payment'),
url(r'paypal-cancel', PaypalCancelView.as_view(), name='paypal-cancel'),
]
whatever i do r'paypal-cancel' or r'^paypal-cancel$' nothing is working
project/urls.py
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'',include('web.urls')),
]
So,where am i doing wrong? I think i have given wrong regex probably!
Related
I'm using drf-spectacular for my django project:
https://github.com/tfranzel/drf-spectacular
On urls.py I have this:
urlpatterns = [
# YOUR PATTERNS
path('api/schema/', SpectacularAPIView.as_view(), name='schema'),
# Optional UI:
path('api/schema/swagger-ui/', SpectacularSwaggerView.as_view(url_name='schema'), name='swagger-ui'),
path('api/schema/redoc/', SpectacularRedocView.as_view(url_name='schema'), name='redoc'),
]
I just want to have 'api/schema/redoc/' so I removed the other two URLs.
After removing 'api/schema/' I get the following error:
Reverse for 'schema' not found. 'schema' is not a valid view function or pattern name.
How can I remove that URL like this but resolve the error:
urlpatterns = [
path('api/schema/redoc/', SpectacularRedocView.as_view(url_name='schema'), name='redoc'),
]
Using Django==2.2.11, djangorestframework==3.8.1
Thank you for reading!
The urls I am using that have the collision:
urlpatterns = [
. . .
url(
r'^some-path$',
views.MyViewSet.as_view({'get': 'list'})
),
url(
r'^some-path$',
views.MyViewSet.as_view({'post': 'create'}),
),
...
]
I am using postman to test each path, and it seems like there is a collision between these two urls.
Using this url with a GET, would work:
http://my_domain.com:8000/some-path
But POST with same url (and with a valid payload) would throw error:
WARNING 2020-03-28 19:13:57,288 "POST /some-path HTTP/1.1" 405 41
And response:
{"detail": "Method \"POST\" not allowed."}
I urls are swapped in order, then the POST would work, and GET would throw a similar error.
I looked at this post:
405 POST method not allowed
I would gladly add the view code - but I am pretty sure the issue is with the urls, since they each work when swapped order.
Will add it upon request.
Thank you!
EDIT: I confused the urls- added the retrieve instead of list sorry!
If you are pointing to same end-point, ie /some-path, you should add your extra actions as,
urlpatterns = [
url(r'^some-path$', MusicianViewset.as_view({'post': 'create', 'get': 'list'})),
]
I'm new to Django and API developing, so I started following Django REST Framework tutorial, and I have an error in the first part of it.
When I go to "127.0.0.1:2000/" on my browser, the Api Root page appears (I hosted it on port 2000), so it seems to be working, but when I try to go to "127.0.0.1:2000/snippets/", I get a Page Not Found error.
I imagine this is a very simple thing I'm just overlooking, but I'm kind of stuck right now, and would appreciate the help. Should my "tutorial/urls.py" include the snippets in any way? I followed the tutorial from the beginning, and re-viewed it, so I don't think so, but its a hypothesis.
According to the tutorial, my tutorial\urls.py (tutorial being the project name) looks like this:
urlpatterns = [
path('', include(router.urls)),
path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
And the app's (snippets\urls.py) like this:
urlpatterns = [
path('snippets/', views.snippet_list),
path('snippets/<int:pk>/', views.snippet_detail),
]
Did you add your URLs from the app you created to the main URLs .py?
Project level urls.py
urlpatterns += [
url(r'^machines/api/', include('core.urls')),
url(r'', include('apps.api.urls')),
url(r'^machines', include('apps.machines.urls')),]
App level urls.py
urlpatterns = [
url(r'^user/edit/(?P<pk>[0-9]+)/$', core_view.ProfileEdit.as_view()),
url(r'^group/', core_view.GroupList.as_view()),
url(r'^groups/add/', core_view.GroupCreate.as_view()),]
when i hit
http://localhost:8000/machines/api/groups/add
it is calling GroupList view instead of GroupCreate.
I am not getting any reason why this is happening?
Current url list triggered GroupList on each url started with group/. You should add $ at the end of GroupList pattern to limit url triggered by GroupList only with group:
url(r'^group/$', core_view.GroupList.as_view()),
url(r'^groups/add/', core_view.GroupCreate.as_view()),]
I have a third party app with the following url configuration:
urlpatterns = [
url(r'^webhook/(?P<token>[-_:a-zA-Z0-9]+)', TelegramView.as_view(), name='webhook'),
url(r'^bots', BotViewSet, name='api'),
]
Now I want to include only the second url (with namespace 'api') because I have overridden the first one in my own app (It will be handled by my own views). How do I use include so that it only includes the second url?