从python重定向到变量href

从python重定向到变量href,python,html,Python,Html,我正在为Udacity作业编写wiki,并希望在导航栏中创建一个“编辑”按钮。基本上,我正在寻找的功能是,当你点击编辑时,你会被重定向到一个编辑页面,当前内容显示在编辑框中。保存该页面时,内容将在原始页面上更新 我认为我的问题在于html,如下所示: <body> <div class="navbar"> {% if not user %} <a href="/signup">Signup</a>|<a

我正在为Udacity作业编写wiki,并希望在导航栏中创建一个“编辑”按钮。基本上,我正在寻找的功能是,当你点击编辑时,你会被重定向到一个编辑页面,当前内容显示在编辑框中。保存该页面时,内容将在原始页面上更新

我认为我的问题在于html,如下所示:

<body>
    <div class="navbar">
        {% if not user %}
        <a href="/signup">Signup</a>|<a href="/login">Login</a>
        {% else %}
        <a href="/_edit{{wiki_url}}">Edit</a>|<a href="/logout">Logout</a>
        {% endif %}
    </div>
    <div id="content">
        {% block content %}
        {% endblock %}
    </div>
</body>
现在的情况是,无论我试图编辑哪个页面,我都会被重定向到/_edit/_edit

如有任何建议,将不胜感激

添加EditPage处理程序类:

class EditPage(Handler):
def render_editwiki(self, user="", title="", content="", error=""):
    self.render("edit_page.html", user=user, title=title, content=content, error=error)

def get(self, wiki_url):
    v = self.request.get('v')
    user = self.user

    if user:
        if v:
            v = int(v)
            thisWiki = db.GqlQuery("SELECT * FROM Wiki WHERE url = :url AND version = :ver ORDER BY created DESC", url=wiki_rul, ver=v).get()
            if not thisWiki:
                self.redirect("/wiki/_edit%s" % wiki_url)
        else:
            thisWiki = db.GqlQuery("SELECT * FROM Wiki WHERE url = :url ORDER BY created DESC LIMIT 1", url=wiki_url).get()
            if not thisWiki:
                self.render_editwiki(user, wiki_url)

        if thisWiki:
            id = thisWiki.key().id()
            w = Wiki.get_by_id(int(id))
            self.render_editwiki(user, w.url, w.content)
    else:
        self.redirect("/wiki/signup")

def post(self, wiki_url):
    content = self.request.get("content")
    user = self.user

    if user:
        if content:
            thisWiki = db.GqlQuery("SELECT * FROM Wiki where url = :url ORDER BY created DESC LIMIT 1", url=wiki_url).get()
            if thisWiki:
                id = thisWiki.key().id()
                previous = Wiki.get_by_id(int(id))
                current = previous.version + 1
                w = Wiki(url=wiki_url, content=content, version=current)
                w.put()
            else:
                w = Wiki(url=wiki_url, content=content,version=1)
                w.put()
            self.redirect('%s' % str(wiki_url))
        else:
            error = "No Content"
            self.render("edit_page.html", content=content, error=error)
    else:
        self.redirect("/wiki/signup")

您是否已经为编辑url编写了url案例?您似乎被重定向到
/\u edit/\u edit
,因为
wiki\u url
/\u edit
。我猜这就是正在发生的事情:

  • 您访问一个常规页面(
    wiki\u url=?
  • 单击编辑url
  • 您访问了编辑url,但没有页面(
    wiki\u url='/\u edit'
  • 您将被重定向到(编辑页面的)编辑url,即
    /\u edit/\u edit

这有意义吗?

您是否已经为编辑url编写了url案例?您似乎被重定向到
/\u edit/\u edit
,因为
wiki\u url
/\u edit
。我猜这就是正在发生的事情:

  • 您访问一个常规页面(
    wiki\u url=?
  • 单击编辑url
  • 您访问了编辑url,但没有页面(
    wiki\u url='/\u edit'
  • 您将被重定向到(编辑页面的)编辑url,即
    /\u edit/\u edit

这有意义吗?

你应该在标签或问题正文中提到你正在使用的库/框架——flask?啊,这是谷歌应用程序引擎,所以我使用的是Jinja2你应该在标签或问题正文中提到你正在使用的库/框架——flask?啊,这是谷歌应用程序引擎,所以我使用的是Jinja2,这很有意义,但如果wiki\u url=”“,它只会转到/\u edit/\u edit。我的调试打印语句实际上显示了一个值,例如/wiki\u test。是的,你说得对。但是你说它会将你重定向到
/\u edit/\u edit
,不管最初的
wiki\u url
是什么?是的,这是正确的。我已经为此奋斗了很长一段时间。如果我手动键入/_edit/wiki_test,它会正常工作,并在保存更改后重定向回/wiki_test。如果我点击/wiki\u test上的编辑按钮,它将重定向到/\u Edit/\u Edit。是的,这是有意义的,但只有当wiki\u url=”“时,它才会转到/\u Edit/\u Edit。我的调试打印语句实际上显示了一个值,例如/wiki\u test。是的,你说得对。但是你说它会将你重定向到
/\u edit/\u edit
,不管最初的
wiki\u url
是什么?是的,这是正确的。我已经为此奋斗了很长一段时间。如果我手动键入/_edit/wiki_test,它会正常工作,并在保存更改后重定向回/wiki_test。如果我点击/wiki\u test上的编辑按钮,它将重定向到/\u Edit/\u Edit。
class EditPage(Handler):
def render_editwiki(self, user="", title="", content="", error=""):
    self.render("edit_page.html", user=user, title=title, content=content, error=error)

def get(self, wiki_url):
    v = self.request.get('v')
    user = self.user

    if user:
        if v:
            v = int(v)
            thisWiki = db.GqlQuery("SELECT * FROM Wiki WHERE url = :url AND version = :ver ORDER BY created DESC", url=wiki_rul, ver=v).get()
            if not thisWiki:
                self.redirect("/wiki/_edit%s" % wiki_url)
        else:
            thisWiki = db.GqlQuery("SELECT * FROM Wiki WHERE url = :url ORDER BY created DESC LIMIT 1", url=wiki_url).get()
            if not thisWiki:
                self.render_editwiki(user, wiki_url)

        if thisWiki:
            id = thisWiki.key().id()
            w = Wiki.get_by_id(int(id))
            self.render_editwiki(user, w.url, w.content)
    else:
        self.redirect("/wiki/signup")

def post(self, wiki_url):
    content = self.request.get("content")
    user = self.user

    if user:
        if content:
            thisWiki = db.GqlQuery("SELECT * FROM Wiki where url = :url ORDER BY created DESC LIMIT 1", url=wiki_url).get()
            if thisWiki:
                id = thisWiki.key().id()
                previous = Wiki.get_by_id(int(id))
                current = previous.version + 1
                w = Wiki(url=wiki_url, content=content, version=current)
                w.put()
            else:
                w = Wiki(url=wiki_url, content=content,version=1)
                w.put()
            self.redirect('%s' % str(wiki_url))
        else:
            error = "No Content"
            self.render("edit_page.html", content=content, error=error)
    else:
        self.redirect("/wiki/signup")