Python 如何在gae中创建随机URL?

Python 如何在gae中创建随机URL?,python,html,google-app-engine,Python,Html,Google App Engine,我想创建随机URL。我的意思是,让第一个url为myapp.appspot.com/868DF7.html 它将连接到app.yaml中的test.py。当用户打开此url时,test.py将生成新的url。我将在数据存储中保存下一个url。之前的url将无法访问。我猜这个词是“一次性的” 这样可以创建动态url吗 my current test.py:它从数据存储中获取上一个字符串,创建下一个url并保存它 import webapp2 from google.appengin

我想创建随机URL。我的意思是,让第一个url为myapp.appspot.com/868DF7.html 它将连接到app.yaml中的test.py。当用户打开此url时,test.py将生成新的url。我将在数据存储中保存下一个url。之前的url将无法访问。我猜这个词是“一次性的”

这样可以创建动态url吗

my current test.py:它从数据存储中获取上一个字符串,创建下一个url并保存它

    import webapp2
    from google.appengine.ext import db
    from google.appengine.api import users

    import jinja2
    import os
    import uuid

    class Saved(db.Model):
        urls=db.StringProperty()
        date = db.DateTimeProperty(auto_now_add=True)

    def _rKey(r_name=None):
        return db.Key.from_path("r", r_name or 'default_r')
    class MainPage(webapp2.RequestHandler):
        def get(self):
            r_name="none"
            saveds_query = Saved.all().ancestor(
                _rKey(r_name)).order('-date')
            urls = saveds_query.fetch(10)
            q=db.Query(Saved).order('-date')
            print "previous url:", q[0].urls
            print "<br>"


            save = Saved(parent=_rKey(r_name))


            save.urls=str(uuid.uuid4().get_hex().upper()[0:6])+".html"
            print "next url:",save.urls
            save.put()    

     APP = webapp2.WSGIApplication([
        ('/give/', MainPage),    
     ], debug=True)
其余的文件与谷歌的留言簿示例几乎相同。

您应该定义一个在通配符或正则表达式上处于活动状态的处理程序,该处理程序与您为随机字符串选择的格式相匹配

当您在那里收到请求时,让处理程序检查所使用的特定路由,并根据(正如您正确指出的)数据存储、云SQL、您自己的Redis服务器等对其进行验证,其中存储了应该从该特殊路由访问的资源或对资源的引用

然后,您将让处理程序为资源提供服务,或者,如果您想/需要,在这一点上以某种方式验证身份验证(希望是他们的google帐户的OAuth)

app.yaml列出了服务器用于匹配处理程序的“规则”。这些规则可以使用通配符和正则表达式。例如,可以添加以下规则:

- url: /movie/.*
服务器将解释此规则,将所有匹配的URL发送到您指定的文件或脚本。例如,以下URL将匹配此规则:

myApp.appspot.com/movie/1234
myApp.appspot.com/movie/1234.mp4

您可以在匹配规则中使用正则表达式,使其尽可能具体。

是的,这是可能的。你觉得哪里有问题?@AndreiVolgin我想app.yaml应该是动态更新的,但我不知道怎么做才能从数据存储中读取这个-url:?如果不是,我想我无法实现我的目标,因为我希望只有一个url可以访问,我的意思是当你可以访问myApp.appspot.com/movie/1234时,第二个myApp.appspot.com/movie/1234.mp4就无法访问。一次只能访问一个。你不需要触摸app.yaml就可以实现这一点。调用处理程序,检查代码/url是否有效,如果有效,则显示内容,如果无效,则重定向/响应错误代码。这是所有网站的工作方式。非常感谢。我将使用self.request.path获取访问的url,但无法让webapp2.RequestHandler使用test.py处理我的问题。您是否有机会检查此测试。py?如果有问题,您可以在新问题中发布代码。每个问题都有被禁止的风险:)我猜它不起作用,因为我们不能多次定义webapp2.WSGIApplication。(helloword.py和test.py)因此我需要向helloword.py添加路由。再次感谢
myApp.appspot.com/movie/1234
myApp.appspot.com/movie/1234.mp4