探戈与Django教程:表格

时间:2014-07-06 15:55:24

标签: python django macos django-1.6

我正在进行章节7中的练习,我必须在每个类别页面上创建一个添加页面链接,该链接会将用户带到一个新页面,在该页面上他们可以输入名称和URL以添加到某个类别如果相关类别不存在,则会将其重定向到添加类别页面。

所以步骤是:

1.创建一个新视图(tut为我们准备好了这个视图)

def add_page(request, category_name_url):
    context = RequestContext(request)
    category_name = category_name_url.replace('_',' ')
    if request.method == 'POST':
        form = PageForm(request.POST)

        if form.is_valid():
            page = form.save(commit = False)

            try:
                cat = Category.objects.get(name = category_name)
                page.category = cat
            except Category.DoesNotExist:
                return render_to_response('blog/add_category.html', {} , context)

            page.views = 0
            page.save()

            return category(request, category_name_url)
        else:
            print form.errors

   else:
        form = PageForm()

    return render_to_response('blog/add_page.html', {'category_name_url': category_name_url, 'category_name': category_name, 'form': form}, context)

2.创建一个新模板

<!DOCTYPE html>

<html>
    <head>
        <title> Drib </title>
    </head>

    <body>
        <h1>Add Page</h1>

        <form id = 'page_form' method = 'post' action = '/blog/add_page/'>
            {% csrf_token %}
            {%for hidden in forms.hidden_fields%}
                {{hidden}}
            {%for field in forms.visible_fields%}
                {{field}}
                {{field.errors}}
                {{field.help_text}}
            <input type = 'submit' name='Submit' value = "Add Page" />
        </form>
    </body>


</html>

3.URL Mapping

url(r'^category/(?P<category_name_url>\w+)/add_page/$', views.add_page , name = 'add_page')

4.从类别页面创建一个链接(我只是发布链接,因为没有意义发布整个文件......

<a href="/blog/category/{{category_name_url}}/add_page/"> Add Page</a>

来自tut的提示是:

- 通过将category_name_url插入视图的context_dict字典来更新category()视图 - DONE

  • 使用指向/ rango / category // add_page /的链接更新category.html。确保仅在请求的类别存在时才显示链接 - 包含或不包含页面。 - 我相信我在第4步中做到了(尽管不是100%肯定)

- 使用URL映射更新rango / urls.py以处理上述链接。(我相信第3步)

我的问题是为什么点击添加页面后我得到

http://127.0.0.1:8000/blog/category/Python/blog/category/Python/add_page/  

而不是

http://127.0.0.1:8000/blog/category/Python/add_page/

2 个答案:

答案 0 :(得分:1)

那是因为

<a href="blog/category/{{category_name_url}}/add_page/"> Add Page</a>

是相对链接。这意味着href会附加到当前路径。

要使它成为绝对路径,只需在前面添加一个/,它会给你以下

<a href="/blog/category/{{category_name_url}}/add_page/"> Add Page</a>
         ^ Here's the leading slash

答案 1 :(得分:1)

要实际添加页面,您可以更改action元素的form属性

/blog/add_page/

/blog/category/{{ category_name_url }}/add_page/