如何在gae中创建随机网址?

时间:2015-02-04 20:50:36

标签: python html google-app-engine

我想创建随机网址。我的意思是,首先请将网址设为myapp.appspot.com/868DF7.html 它将连接到app.yaml中的test.py.当用户打开此URL时,test.py将生成新的URL。我会在数据存储区保存下一个url。并且无法访问上一个网址。我猜这个词是"一次性"。

可以像这样创建动态网址吗?

我当前的test.py:它从数据存储中获取前一个字符串并创建下一个网址并保存。

    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)

和app.yaml

handlers:
- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico

- url: /.*
  script: helloworld.APP

libraries:
- name: webapp2
  version: "2.5.2"
- name: jinja2
  version: "2.6"

其余的文件几乎与google的留言板示例相同。 https://github.com/GoogleCloudPlatform/appengine-guestbook-python/blob/master/guestbook.py

2 个答案:

答案 0 :(得分:1)

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

当您在那里收到请求时,让处理程序检查所使用的特定路由,并对其进行验证(正如您所记录的那样)数据存储区,Cloud SQL,您自己的Redis服务器等,它们存储资源或引用应该可以从该特殊路线访问的资源。

然后您可以让处理程序为资源提供服务,或者在那时,如果您需要/需要,以某种方式验证身份验证(希望他们的Google帐户的OAuth)

答案 1 :(得分:1)

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

- url: /movie/.*

服务器会解释此规则,以将所有匹配的URL发送到您指定的文件或脚本。例如,以下网址符合此规则:

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

您可以在匹配规则中根据需要使用正则表达式。