0

大家好,感谢阅读!

我是一个非常新颖的 Django 用户。我决定从我的基本 web 转移到 django 来学习如何使用框架 web。我做了 django 教程,但我的项目......这种方式根本不是无忧无虑的。

让我先简要介绍一下我的项目,以便您可以大致了解整个项目。我的基本网站由主页和部分组成,您可以在其中更改不同的参数(例如室温)或检查传感器数据。

到现在为止,我的主页和温度控制部分正在运行(几乎没有要修复的东西,但渲染正确)。我想用主页中的按钮链接每个部分。这是我的主页模板:

{% extends 'base.html' %}
{% block content %}
<h1>Here goes a title</h1>
    <p>A welcome message here...</p>
    <h2>please select an action</h2>                                                                
    <div id="column_left" class="column">                                                         
    {% for action in actions_list_left %}                                                     
        <div id="action_box1{{ forloop.counter }}" class="action_box">                            
            <input type="button" onclick= " HELP HERE!! "                   
            id= "{{ action.action_name }}_sel" class="action_button">                             
            <div id="{{ action.action_name }}_desc" class="action_desc">                          
                {{ action.description }}                                                          
            </div>                                                                                
        </div>
    {% endfor %}
    </div>                                                                                          
<!--I ommit the right column, containing more actions...-->
{% endblock %}

我想使用我的“动作”模型字段链接到其他部分。我的想法是使用动作名称字段作为该部分的 url(以通用“模型”方式进行)。例如,如果我的主页位于 localhost:8000/ 并且操作名称是“temp”,我希望关联的按钮链接到 localhost:8000/temp 并呈现合适的模板。

因为我认为是 urls.py 问题,所以我在这里发布了我的 urls 文件(没有导入行)......

网址.py

admin.autodiscover()

urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),                                                    
    url(r'^$', include('principal.urls')),
    url(r'^temp/', include('temp.urls')),     
)

主体/urls.py

urlpatterns = patterns('',
    url(r'^$', 'principal.views.home', name='home'),
)

临时/urls.py

urlpatterns = patterns('',
url(r'^$', 'temp.views.index', name='temp_index'),
     url(r'^(?P<pk>\d+)/$',
     DetailView.as_view(
         model=Room,
         template_name='temp/roomTemp.html')),
)

我尝试了一些我在其他线程中阅读过的想法......

{% url temp:index %}

这个引发了 NoReverseMatch 错误...“temp”不是注册的命名空间。然后我用谷歌搜索了如何解决这个问题,并在 urls.py 中更改了这一行:

url(r'^temp/', include('temp.urls', namespace='temp')),

同样在 temp/urls.py 我改变了这一行:

url(r'^$', 'temp.views.index', name='temp'),

两个页面仍然呈现正常,但按钮不起作用(什么都不做)......它一定很简单,但所有 url 的东西对我来说似乎有点棘手(顺便说一句,语法有时就像一个 makefile mordor 文件:P)。我正在使用 Django 1.3

任何帮助将非常感激。此外,任何“好的 django 编码器”评论或解释都会非常有用,只是为了不再犯同样的错误!

提前致谢,

胡安

编辑:我在这里的代码中发布修复,以防有人发现它有用:

<form action="{% url action.action_url %}">
    <input type="submit" id="{{ action.action_name }}_sel" value="" class="action_button">
    <div id="{{ action.action_name }}_desc" class="action_desc">
        {{ action.description }}
    </div>
</form>
4

1 回答 1

0

如果你不需要使用 url 命名空间,你可以这样做

网址.py

admin.autodiscover()

urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),                                                    
    url(r'^$', include('principal.urls')),
    url(r'^temp/', include('temp.urls')),     
)

临时/urls.py

urlpatterns = patterns('',
url(r'^$', 'temp.views.index', name='temp_index'),
    url(r'^(?P<pk>\d+)/$',
        DetailView.as_view(
        model=Room,
        template_name='temp/roomTemp.html')),
)

然后在模板中

{% url 'temp_index' %}

希望对你有效。

于 2013-10-01T11:10:05.130 回答