Python Django Plotly破折号检索URL段塞
我想在Django框架中包含plotly dash。我想有一个应用程序纳入到一个HTML模板,将显示线图读为熊猫数据帧从csv的基础上输入的slug在url。csv文件与slug文件共享相同的名称,以便于(我认为)打开 我希望能够提取url路径或slug,并使用它来确定我的应用程序打开哪个csv文件并使用哪个csv文件来显示线条图的数据 这只不过是一个破折号。我可以在回调中使用url和路径名,并使用路径名作为csv文件的名称,让应用程序根据url slug动态打开正确的csv文件Python Django Plotly破折号检索URL段塞,python,django,csv,plotly-dash,Python,Django,Csv,Plotly Dash,我想在Django框架中包含plotly dash。我想有一个应用程序纳入到一个HTML模板,将显示线图读为熊猫数据帧从csv的基础上输入的slug在url。csv文件与slug文件共享相同的名称,以便于(我认为)打开 我希望能够提取url路径或slug,并使用它来确定我的应用程序打开哪个csv文件并使用哪个csv文件来显示线条图的数据 这只不过是一个破折号。我可以在回调中使用url和路径名,并使用路径名作为csv文件的名称,让应用程序根据url slug动态打开正确的csv文件 @app.ca
@app.callback(
Output('indicator-graphic', 'figure'),
[Input('url', 'pathname'),])
def update_graph(pathname):
df=pd.read_csv('path/to/file/'+pathname+'.csv)
上述代码在Dash测试服务器中运行良好。当我将其合并到Django中时,url和路径名将不再工作
我已经尝试了我能想到的一切,将slug或路径名作为输入传递给Dash回调。我找不到任何工作
然后,我尝试将dataframe设置为回调外部的全局变量,并使用django的HttpRequest函数。但当我尝试时,它返回并清空路径
from django.http import HttpRequest
request = HttpRequest
filename = str(request.path)
df = pd.read_csv('path/to/file'+filename+'.csv)
返回一个空字符串
如何访问正确的csv文件?我需要从Url获取slug,并使用它打开正确的csv文件以呈现正确的图形
url.py
urlpatterns = [
path('', views.home, name='home'),
url('^django_plotly_dash/', include('django_plotly_dash.urls')),
re_path(r'^(?P<slug>[\w-]+)/$', views.coins, name='coins') ]
这一点在精心策划的社区论坛上得到了回答 德尔西姆写道: 您的模板中将包含以下内容
{%plotly\u app name=“your app name”初始参数=some\u dict%}
在视图中,创建了一些作为python字典的dict——外部dict将一个破折号组件id作为键,而内部dict是组件上的属性。例如,如果您使用一个id为“hidden div for slug”的隐藏div,并使用子节点存储slug,您可能会遇到如下情况
some_dict={'hidden-div-for-slug':{'children':slug}
在您的视图中。您的dash应用程序现在有了slug,或者您选择从视图传播到它的任何信息,这些信息可以在回调函数中使用。plotly社区论坛上回答了这一问题 德尔西姆写道: 您的模板中将包含以下内容
{%plotly\u app name=“your app name”初始参数=some\u dict%}
您的视图创建了一些作为python字典的dict——外部dict有一个dash组件id作为键,内部dict是组件上的属性
some_dict={'hidden-div-for-slug':{'children':slug}
在你看来。你的dash应用程序现在有了slug,或者你从视图中选择传播给它的任何信息,可以在回调函数中使用
def home(request):
return render(request, 'home/index.html')
def coins(request, slug):
coin = Coins.objects.get(slug=slug)
return render(request, 'home/coins.html', {'coin':coin, 'chart_twitter': chart_twitter})