因此我的Django和React URL路由在开发中的问题为零,但是现在我试图进入生产阶段,遇到了各种各样的问题。
是的,关于正则表达式,我很烂。看起来就像只猫在键盘上走路。绝对是我需要坐下来并致力于学习的东西。
在开发人员中,我最擅长的是完美运行的以下内容:
url(r'', TemplateView.as_view(template_name='index.html')),
在生产中,我得到了Uncaught SyntaxError: Unexpected token <
。正如我所解释的,这与JS被捕获在URL中而不是index.html
有关,并且JS需要“通过”。有人告诉我尝试:
url(r'^$', TemplateView.as_view(template_name='index.html')),
这有效。该Web应用程序已加载,我能够进行导航。
但是,当涉及到验证电子邮件链接时,出现了另一个问题。我遇到Page not found (404)
的问题,同样,这在我的开发设置中也不是问题。
电子邮件链接如下所示:
https://test.example.com/auth/security_questions/f=ru&i=101083&k=6d7cd2e9903232a5ac28c956b5eded86c8cb047254a325de1a5777b9cca6e537
我得到的是这样的:
Page not found (404)
Requested URL: http://test.example.com/auth/security_questions/f%3Dru&i%3D101083&k%3D6d7cd2e9903232a5ac28c956b5eded86c8cb047254a325de1a5777b9cca6e537/
我的反应路线如下:
<App>
<Switch>
<Route exact path='/auth/security_questions/f=:f&i=:id&k=:key' component={SecurityQuestions} />
<Route exact path='/auth/*' component={Auth} />
<Route exact path='/' component={Auth} />
</Switch>
</App>
这应该呈现/auth/security_questions/...
路线。
我的urls.py
是:
urlpatterns = [
# API authentication entry point
url(r'^api/auth/', include('authentication.urls', namespace='signin')),
# Any requets that come through serve the index.html
# url(r'^$', TemplateView.as_view(template_name='index.html')),
] + static(settings.STATIC_URL,
document_root=settings.STATIC_ROOT)
还有authentication.urls
:
urlpatterns = [
url(r'^security_questions/', SecurityQuestionsAPIView.as_view(), name='security_questions'),
]
似乎Django正在尝试处理路由,显然没有匹配的路由,实际上它应该只渲染index.html
并让react-router-dom
接管向API发送请求从富裕。因此,看来我需要做一个让JS顺利通过的包罗万象的东西。
我遇到了一个似乎相关的问题:react routing and django url conflict。因此,我添加了以下内容,以使我拥有/
渔获物,然后拥有“一切-其他”渔获物。
# match the root
url(r'^$', TemplateView.as_view(template_name='index.html')),
# match all other pages
url(r'^(?:.*)/?$', TemplateView.as_view(template_name='index.html')),
仍然不会呈现验证链接。对最后捕获的所有URL进行了其他尝试:
Django route all non-catched urls to included urls.py
url(r'^', TemplateView.as_view(template_name='index.html')),
结果Uncaught SyntaxError: Unexpected token <
url(r'^.*', TemplateView.as_view(template_name='index.html')),
请参阅上文。
因此,我们将深入研究Django,正则表达式,并尝试对其进行梳理,但与此同时...
我在这里做什么错了?
答案 0 :(得分:1)
url(r'^(?:.*)/?$', TemplateView.as_view(template_name='index.html')),
对此:
url(r'^(?:.*)/$', TemplateView.as_view(template_name='index.html')),
这防止了Uncaught SyntaxError: Unexpected token <
错误。它将加载Web应用程序的一部分,但不是全部。该问题是由于URL编码所致,所以我必须清理URL的格式。我对此有疑问:
Prevent URL encoding that is removing equals signs from URL
现在一切似乎都正确加载了。