New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add option to serve with URL prefix #2008
base: master
Are you sure you want to change the base?
Conversation
Added the option to run Doccano with a URL prefix instead of always running from the domain root. The prefix is configured by specifying a `BASE_URL` environment variable. To run Doccano under `/doccano/`, set `BASE_URL` to '/doccano/': ```sh export BASE_URL=/doccano/ ``` When we now compile the front-end, all routes are prefixed with BASE_URL. We also need to let Django know about our new prefix. This is done using the same BASE_URL, but needs to be set during runtime. I could not find a clean method to do them both during runtime. Since such a configuration will most likely only be used in combination with a load balancer, I also added the option to set `USE_X_FORWARDED_HOST` using environment variables.
Thanks! Please write some test cases. After that, I'll merge this PR. |
Note that these URLs should probably not be defined in the view anyways. I patched them here because I am not familiar enough with the project to fix this cleanly.
Great, will do. Any tips about where to start for someone unfamiliar with the project (and Django in general)? I expect I should extend |
Still in progress? @Vinno97 |
This hasn't been on my radar for quite a long time. The project I needed this fix for, was finished up a while ago. I'd be willing to write some tests for it, but I'm still equally unfamiliar with the project and Django. So some pointers will be needed |
@@ -245,7 +249,7 @@ | |||
|
|||
# User media files | |||
MEDIA_ROOT = env("MEDIA_ROOT", path.join(BASE_DIR, "media")) | |||
MEDIA_URL = "/media/" | |||
MEDIA_URL = BASE_URL + "/media/" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
BASE_URL + "media/"
?
if settings.BASE_URL: | ||
urlpatterns = [path(f'{settings.BASE_URL.strip("/")}/', include(urlpatterns))] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These lines seem to make the URL (e.g. http://127.0.0.1:8000/v1/projects) inaccessible. settings.BASE_URL
is evaluated as True
.
Added the option to run Doccano with a URL prefix instead of always running from the domain root. The prefix is configured by specifying a
BASE_URL
environment variable. This PR fixes #1878To run Doccano under
/doccano/
, setBASE_URL
to/doccano/
:export BASE_URL=/doccano/
When we now compile the front-end, all routes are prefixed with BASE_URL.
We also need to let Django know about our new prefix. This is done using the same BASE_URL environment variable but needs to be set during runtime. I could not find a clean method to configure them both during runtime.
Since such a configuration will most likely only be used in combination with a load balancer, I also added the option to set
USE_X_FORWARDED_HOST
using environment variables.Note that I did not write any tests for this (yet), both because I am unsure how this should be done and because I would first like to know if this PR would be acceptable.