Django将数据从一个app传递到另一个app?

时间:2017-04-30 15:15:56

标签: python django django-templates

我正在使用django-allauth进行身份验证。我有一个仪表板,有许多链接。

user.html

`{% include 'sidebar.html' %}
 <h1>Profile View</h1>
 <p>{{ profile.username }}</p>`

change_password.html

`{% include 'sidebar.html' %}
 <h2>Change Password</h2>
 <p>{{ profile.username }}</p>`

sidebar.html

`<a href="{% url 'profile_view' slug=profile.username %}">Profile View</a>
 <a href="{% url 'change_password' %}">Change Password</a>`

views.py

class ProfileView(DetailView):
    template_name = "user.html"
    queryset = User.objects.all()
    context_object_name = 'profile'
    slug_field = "username"

更改密码视图来自django-allauth。如何将用户名从ProfileView传递到更改密码视图,以便我可以在change_password.html页面中显示。

主要问题 由于我已将sidebar.html包含在两个视图中,因此在ProfileView中效果很好,但当我导航到change_password视图时,我收到以下错误

  

反向&#39; profile_view&#39;使用关键字参数&#39; {&#39; slug&#39;:&#39;&#39;}&#39;未找到。尝试了1种模式:[&#39;(?P [ - \ w。@ + - ] +)/ $&#39;]

错误未显示在ProfileView中,因为profile.username会返回一个值,但当我导航到change_password视图时,我会收到上述错误,因为profile上下文对象只传递那个特定的视图。我想在整个项目中使用那个context_object。

有一种简单的方法吗?除了构建JSON API?

2 个答案:

答案 0 :(得分:0)

我刚看了一下allauth app提供的模板标签。我还没有对此进行测试(我也没有使用该项目),但这看起来就像你在寻找的那样。

在您的模板中,任何模板......

    updateGraph(list: Array<Double>) {
            let dataEntries = [BarChartDataEntry(x: 0.0, yValues: list)]

let barChartDataSet = BarChartDataSet(values: dataEntries, label: "")

    let colorValues = colorList.map( { $0.color })
    barChartDataSet.colors = colorValues//ChartColorTemplates.material()

    let labelValues = nameList.map( { $0.name })
    barChartDataSet.stackLabels = labelValues

    let barChartData = BarChartData(dataSet: barChartDataSet)
    barChartData.setValueFont(UIFont.systemFont(ofSize: 12.0))
    barChart.data = barChartData
}

我找到了答案here

答案 1 :(得分:0)

我得到了它的工作,谢谢@teewuane

sidebar.html

<a href="{% url 'profile_view' slug=profile.username %}">Profile View</a>

替换为

<a href="{% url 'profile_view' slug=request.user.username %}">Profile View</a>