我想让Django接受由无限数量的参数组成的url。 Dropbox之类的事情一直在发生。文件所在的每个文件夹的每个参数。可能有无限多个子文件夹。参数为字母数字。
答案 0 :(得分:2)
您可以创建一个URL,该URL接受一个任意长的参数,而不包含某种形式的分隔符,然后在您的视图中用该分隔符分隔该参数。对于类似参数的路径:
x
现在,对此URL的任何请求(例如url(r'^prefix/(?P<path>[a-zA-Z\/]*)/$', your_view),
def your_view(request, path):
folders = path.split('/')
和文件夹都将包含prefix/folder1/folder2/folder3/
答案 1 :(得分:0)
我不认为您可以使用Django URLS定义无限的url参数。因为使用django,您必须声明站点将要使用的URL。
但是,如果您要专门讨论文件夹和文件,则可以在模型中使用FileField
来进行此操作,该模型可以决定保存文件的位置并将路径保存在instance.filefield.url
中。然后插入搜索Django URL,搜索Nginx URL等。 {site_url}/static/{any}/{folder}/{you}/{want}/{etc}/
。
包括在内,您可以使用这样的模型。
class Folder(models.Model):
name = models.CharField(...)
parent = mdoels.ForeignKey('self')
...
def get_path_to_here(self):
# here you have the full url getting all parents folders.
...
def func_to_declare_where_save_it(instance, filename):
return os.path.join(
f'{instance.folder.get_path_to_here()}',
f'{filename}')
class File(models.Model):
name = models.CharField(...)
folder = models.ForeignKey(Folder)
file = models.FileField(upload_to=func_to_declare_where_save_it)